Помощь - Поиск - Пользователи - Календарь
Полная версия: Условия в Pascal 7.0
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Алексей Зеленский
Здравствуйте уважаемые форумчане. У меня возникла проблема при выполнении лабораторной работы. Суть проблемы закоючается в следующем: при выполнении нижепредставленного кода, выполняется не правильно условие. Вводим данные: A, B:= FALSE и C, D:= 123. После выполнения вместо S1 выполняется S3.
Вот код:
USES CRT;
Var
A, B: BOOLEAN;
Ai, Bi, C, D: REAL;
Begin
CLRSCR;
TextColor(10);
writeln('The program is showing the operation of the algorithms branching structure');
writeln('');
TextColor(20);
writeln('To continue, press "ENTER" ...');
TextColor(8);
ReadLN;
writeln('Enter the type BOOLEAN variable A (0 or 1).'); READ(Ai);
If Ai<>0 then
If Ai<>1 then
writeln('No = !')
eLse
If Ai=1 then
A:= TRUE
eLse
A:= FALSE;
writeln('Enter the type BOOLEAN variable B (0 or 1).'); READ(Bi);
If Bi<>0 then
If Bi<>1 then
writeln('No = !')
eLse
If Bi=1 then
B:= TRUE
eLse
B:= FALSE;
writeln('Enter the type INTEGER variable C.'); READ©;
writeln('Enter the type INTEGER variable D.'); READ(D);
IF ((A=B) AND (C>D)=TRUE OR NOT A)
THEN IF ((TRUE<>A) AND (C-D<3))
THEN writeln('S1')
ELSE writeln('S2')
ELSE writeln('S3');

END.
Федосеев Павел
Я не знаю, что ты хотел реализовать в условиях. Поясню лишь то, что получилось.
Итак,
A:=false;
B:=false;
C:=123;
D:=123;
Условие ((A=B) AND (C>D)=TRUE OR NOT A) эквивалентно условию Exp1=Exp2, где
Exp1:=(A=B) AND (C>D)
Exp2:=TRUE OR NOT A, что, согласно правилу поглощения равно просто true.
При тех значениях A, B, C и D получим
Exp1:=((false=false) and (123>123)) = (true and false) = false
Exp2:=true
Exp1<>Exp2
Вот и переходим к S3.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.