Техника
Можно ли в паскале использовать несколько типов, для одной переменной
Хочу написать прогу, в которой буду делить числа, и если число делится без остатка то его разделить, если нет то просто оставить в виде записи. Только чисел будет несколько и вывести результат надо будет после всех вычислений.
Есть специальный тип для данных, тип которых неизвестен заранее, и по ходу программы может оказаться любым. В Delphi (это тот же Паскаль, только для Windows) этот тип называется "variant".
Кроме того, в Паскале есть тип "указатель" (pointer). При инициализации такой переменной, ты даешь специальную команду, которая выделит под твои данные кусок памяти (сколько запросишь) , а сама переменная просто служит указателем на этот кусок памяти. Теперь ты можешь класть туда все, что хочешь, лишь бы оно не превысило выделенного участка памяти. Но естественно, теперь уже Паскаль не сможет отслеживать твои ошибки в связи с этими данными, т. к. не знает, что ты ими подразумевал. Вся ответственность за корректную обработку данных ложится на тебя, и отлавливать ошибки намного сложнее становится. Но по крайней мере, Паскаль ДАЕТ эту возможность.
Кроме того, в Паскале есть тип "указатель" (pointer). При инициализации такой переменной, ты даешь специальную команду, которая выделит под твои данные кусок памяти (сколько запросишь) , а сама переменная просто служит указателем на этот кусок памяти. Теперь ты можешь класть туда все, что хочешь, лишь бы оно не превысило выделенного участка памяти. Но естественно, теперь уже Паскаль не сможет отслеживать твои ошибки в связи с этими данными, т. к. не знает, что ты ими подразумевал. Вся ответственность за корректную обработку данных ложится на тебя, и отлавливать ошибки намного сложнее становится. Но по крайней мере, Паскаль ДАЕТ эту возможность.
в неклассическом паскале есть тип вариант, в классическом есть указатели. Ещё есть тип рекорд кейс оф...
Нет, КОНЕЧНО, а главное, ЗАЧЕМ?
Можно сохранять число как mytype, где mytype = record m, n: Integer
В m хранить числитель дроби, в n знаменатель. При выводе если n=1 то выводить только m иначе строку в виде m/n, получится что-то вроде Str(a.m)+'/'+Str(a.n), точный синтаксис паскаля не помню.
Например, складывание двух чисел a и b может выглядеть как
sum.m := a.m*b.n+b.m*a.n;
sum.n := a.n*b.n;
sum := sokrat(sum);
В функции sokrat следует прописать принцип сокращения числителя на знаменатель (доведения до обычной несократимой дроби) , переменная и результат также имеют тип mytype.
В m хранить числитель дроби, в n знаменатель. При выводе если n=1 то выводить только m иначе строку в виде m/n, получится что-то вроде Str(a.m)+'/'+Str(a.n), точный синтаксис паскаля не помню.
Например, складывание двух чисел a и b может выглядеть как
sum.m := a.m*b.n+b.m*a.n;
sum.n := a.n*b.n;
sum := sokrat(sum);
В функции sokrat следует прописать принцип сокращения числителя на знаменатель (доведения до обычной несократимой дроби) , переменная и результат также имеют тип mytype.
Андванс Чесс. Нихрена не понятно, но очень интересно :-)
Похожие вопросы
- Для чего на электростанциях используют несколько энергоблоков, работающих одновременно?
- Зачем использовать переменные резисторы разного номинала?
- Почему постоянный ток в несколько раз слабее переменного?
- Почему график переменного тока и импульсного абсолютно одинаковый ???
- Пишу статью о постоянном и переменном токе. Что верно а что нет. Ясность и конкретика приветствуются
- Какой ток течет на аудиоколонки (постоянный, переменный или пульсирующий)
- любая ли синусоида переменного ТОКА приемлима ?
- С переменными нельзя проводить те же операции что и с объектом? Чем объект отличается от переменной?
- Переменный ток
- Можно ли поставить переменный (подстроечный) резистор после усилителя?