IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Условия в Pascal 7.0, Некорректное выполнение условия
Алексей Зеленский
сообщение 4.11.2013 13:49
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Здравствуйте уважаемые форумчане. У меня возникла проблема при выполнении лабораторной работы. Суть проблемы закоючается в следующем: при выполнении нижепредставленного кода, выполняется не правильно условие. Вводим данные: 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.


Сообщение отредактировано: Алексей Зеленский - 4.11.2013 13:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 4.11.2013 14:16
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


Я не знаю, что ты хотел реализовать в условиях. Поясню лишь то, что получилось.
Итак,
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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 12.08.2025 2:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"