Техника

Можно ли в паскале использовать несколько типов, для одной переменной

Хочу написать прогу, в которой буду делить числа, и если число делится без остатка то его разделить, если нет то просто оставить в виде записи. Только чисел будет несколько и вывести результат надо будет после всех вычислений.
Есть специальный тип для данных, тип которых неизвестен заранее, и по ходу программы может оказаться любым. В Delphi (это тот же Паскаль, только для Windows) этот тип называется "variant".
Кроме того, в Паскале есть тип "указатель" (pointer). При инициализации такой переменной, ты даешь специальную команду, которая выделит под твои данные кусок памяти (сколько запросишь) , а сама переменная просто служит указателем на этот кусок памяти. Теперь ты можешь класть туда все, что хочешь, лишь бы оно не превысило выделенного участка памяти. Но естественно, теперь уже Паскаль не сможет отслеживать твои ошибки в связи с этими данными, т. к. не знает, что ты ими подразумевал. Вся ответственность за корректную обработку данных ложится на тебя, и отлавливать ошибки намного сложнее становится. Но по крайней мере, Паскаль ДАЕТ эту возможность.
BG
Begmyrat Gurbansahedov
61 585
Лучший ответ
в неклассическом паскале есть тип вариант, в классическом есть указатели. Ещё есть тип рекорд кейс оф...
Алина Гареева
Алина Гареева
62 835
Нет, КОНЕЧНО, а главное, ЗАЧЕМ?
Можно сохранять число как 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.
СS
Саша S_Exit_
31 768
Андванс Чесс. Нихрена не понятно, но очень интересно :-)