Ну вообще-то я в прошлом сообщении уже все сказала про true и false, разве трудно было 0 и 1 поменять на данные значения?
Я лишь подтвердил правильность этого высказывания, не более. То, что
Tomb_and_Jerry не захотел это попробовать - уже другой вопрос.
Действительные числа - множество, в которое также входят и целочисленные, разве нет?
Согласен, просто неясно, в таком случае, зачем в задании просят использовать case, если с ним все равно в паре нужен if для определения состояния flag'а. Какая-то нерациональная задача. А вот если x использует тип от byte до longint, то, зная пределы этих типов, в case можно было бы включить лишь диапазоны:
[нижний предел]..2
3..[верхний предел]
И насчет данного условия не уверена: x<=2. Вообще-то, если преподаватели не врут - вещественные числа вообще не стоит приравнивать друг к другу, ибо вряд ли переменная станет точно равной двум. Поэтому для того, чтобы наверняка попадало в диапазон, я и прибавила погрешность. Можно и меньше сделать, не спорю - 0.0000....01.
Почему переменная не может быть равна точно двум? Чем это обусловлено? Под переменную real определяется 4 байта и если задать двойку в real, то она занесется в память как 2.0(0)E0, т.е. остальные биты информации останутся нулями. В задании условие четкое, поэтому его, мне кажется, и нужно соблюсти. Если не верите, вот попробуйте выполнить:
var i: integer;
r1,r2: real;
begin
i:=2;
r1:=2;
r2:=2.0000000;
if i=r1 then writeln(i,' =',r1) else writeln(i,' <>',r1);
if i=r2 then writeln(i,' =',r2) else writeln(i,' <>',r2);
if r1=r2 then writeln(r1,' =',r2) else writeln(r1,' <>',r2);
readln;
end.
Результат:
Значения для наглядности специально без округления.
Возможно, в другом языке программирования кроме непосредственно значения сравниваются еще и типы переменных, но не в Turbo Pascal 7.0.
Сообщение изменено: WinterWolf (17 November 2010 - 13:06)
Слова - лакмусовая бумажка, определяющая тип сознания.