Страница 1 из 1
Глава 13 Задание В
Добавлено: 06.12.2016 20:27:26
Eskin
На 95 странице нас просят реализовать схему:
дом-->улица A->Улица B ->Шлагбаум F -> школа
I-> Улица C------> Улица D---------------------I
I-> улица E ------> Шлагбаум G-----------------I
Дело в том, что по условиям задания, закрытый шлагмаум соответствует условию TRUE, если же перед булевым выражением вставить оператор "not" то оно целиком меняет смысл, как можно реализовать данный алгоритм?
каким образом, можно грамотно вставить оператор not, не перевернув данное логическое выражение на противоположенный знак?
Re: Глава 13 Задание В
Добавлено: 07.12.2016 14:43:30
enot777
>> Eskin
Вариант решения для 13в
Код: Выделить всё
program p13_w;
var
a, b, c, d, e, f, g:boolean; //a..e - улицы, true (1) - свободна, f and g - шлагбаум, true (1) - если закрыт
s: string;
begin
writeln('Укажите загруженность дорог a, b, c, d, e, f, g "0" or "1"');
write('a: ');readln(s);a:= s='1';
write('b: ');readln(s);b:= s='1';
write('c: ');readln(s);c:= s='1';
write('d: ');readln(s);d:= s='1';
write('e: ');readln(s);e:= s='1';
write('f: ');readln(s);f:= not(s='1');
write('g: ');readln(s);g:= not(s='1');
a:= (a and b and f);
c:= (c and d);
e:= (e and g);
if a and c and e then writeln('Езжай по любой дороге')
else if a then writeln('Езжай по: a b f')
else if c then writeln('Езжай по: c d')
else if e then writeln('Езжай по: e g')
else writeln('Иди пешком!');
writeln('Нажми Enter!');
readln;
end.
1 путь: a b f
2 путь: c d
3 путь: e g
Шлагбаум f и g можно инвертировать при присвоении: f:=not(s='1'); и g:=not(s='1');
Re: Глава 13 Задание В
Добавлено: 07.12.2016 19:38:27
Oleg_D
enot777 писал(а):Шлагбаум f и g можно инвертировать при присвоении: f:=not(s='1'); и g:=not(s='1');
Можно и так, конечно. Но цель задачи -- научить применять отрицание внутри выражений. Например:
Код: Выделить всё
write('f: '); readln(s); f:= s='1';
write('g: '); readln(s); g:= s='1';
a:= (a and b and not f);
c:= (c and d);
e:= (e and not g);
А ещё могу предложить желающим изменить условие задачи так, чтобы уличной пробке соответствовало TRUE, т.е. инвертировать условие. И записать соответствующие выражения с учётом этого изменения.
Re: Глава 13 Задание В
Добавлено: 07.12.2016 23:31:42
Eskin
Благодарю вас за ответы, в некоторых вариантах программы я был близок к решению, но к сожалению применял not по отношению к всему выражению, либо же ставил его как and not (e and G) из за чего компилятор выдавал ошибку, К сожалению я не подумал, что not, можно так же применять внутри скобок как операторы or и and
Олег, с удовольствием попробую решить вашу задачу в свободное время
