Решение задачи №13

Решение задачи №13 из главы 5

Даны три целых числа: A, B, C. Проверить истинность высказывания: « Число A и число B больше 17, а C > 7».

var
a,b,c:integer;//числа
b1, b2:boolean;//для хранения результатов проверок


begin
   write('Vvedite  chislo A, B, C: ');
   read(a, b, c);//читаем переменные списком
   readln();//удерживаем консоль после ввода переменных А, В, С
   b1:=(A and B) > 17;
   b2:=(C > 7);
   writeln('Rezultat: ', '(A and B) > 17 =  ',b1);
   write('Rezultat: C > 7 = ', b2);
   readln();
end.  
vedro-compota's picture

Число A и число B больше 17, а C > 7

подразумевается одновременное выполнение этих условий.
В русском языке в данном случае " а C > 7" подразумевается, что "и C >7". Вам нужно использовать логический оператор.

_____________
матфак вгу и остальная классика =)

gani84's picture

var
a,b,c:integer;//объявляем целые числа
b1:boolean;//для хранения результатов проверок


begin
   write('Vvedite  chislo A, B, C: ');
   read(a, b, c);//читаем переменные списком
   readln();//удерживаем консоль после ввода переменных А, В, С
   b1:=((A and B) > 17) and (C > 7);
   writeln('Rezultat: ', '((A and B) > 17) and C > 7  =  ',b1);
   readln();
end.
vedro-compota's picture

решение засчитано.

_____________
матфак вгу и остальная классика =)

Нет. Программа работает неправильно.
Вот её вывод при различных входных данных

$ ./prg 
Vvedite  chislo A, B, C: 64 64 18
Rezultat: ((A and B) > 17) and C > 7  =  TRUE
$ ./prg 
Vvedite  chislo A, B, C: 64 128 18
Rezultat: ((A and B) > 17) and C > 7  =  FALSE
gani84's picture

Все работает правильно!!!

Это зависит от того, как понимать слова

Число A и число B больше 17, а C > 7

Если бы мы это воспринимали как A>17, и B>17, и С>7, то
64>17, 128>17 и 18>7 считалось бы неверным утверждением.

А если считать, что

Число A и число B

означает результат побитового логического умножения этих чисел, тогда --- да.

https://pas1.ru/bitarithmetic

gani84's picture

Мы умножаем побитово, так что результат корректен.

vedro-compota's picture

я по невнимательности пропустил решение. Оно действительно неправильное. Речь не о побитовом умножении, надо проверить истинность высказывания.

Это решение неправильно как и вот то. Ошибка точно такая же.

Как вы понимаете фразу "A и B больше 5" -- как она будет звучать в более подробной форме?

_____________
матфак вгу и остальная классика =)

gani84's picture

Тогда я не знаю. Лучше объясните если это не по битово.

gani84's picture

введеное число а=10 и b=20 => тогда (A и B) > 5 или (A and B) >5 или (10 and 20)>5 =>тогда (0)>5 следовательно результат false.
Я так понимаю.

gani84's picture

a,b,c:integer;//объявляем целые числа
b1:boolean;//для хранения результатов проверок


begin
   write('Vvedite  chislo A, B, C: ');
   read(a, b, c);//читаем переменные списком
   readln();//удерживаем консоль после ввода переменных А, В, С
   b1:=(A > 17) and (B > 17) and (C > 7);
   writeln('Rezultat: ', '(A > 17) and (B > 17) and (C > 7)  =  ',b1);
   readln();
end.    
vedro-compota's picture

решение засчитано.

_____________
матфак вгу и остальная классика =)