Не правильно работает код на Pascal, который должен выводить минимальную четную цифру натурального числа, данного пользователем
Например при вводе числа 555565 выводится 2, хотя должно выводиться 6. Прошу предлагать решения данной проблемы только с использованием базового синтаксиса. Также хотелось бы добавить сообщение выводящееся при отсутствии четных цифр в числе. Заранее благодарен.
program xxx;
var a, b,c, min :integer;
begin
write('введите число а=');
read(a);
min:=10;
while a<>0 do
begin
b:= a mod 10;
c:= b mod 2;
if (b < min) and (c=0) then min:=b;
a:= a div 10;
end;
writeln(min)
end.
Ответы (1 шт):
Я проверил код на онлайн-компиляторе: https://rextester.com/l/pascal_online_compiler
Он выдал 2
Если посмотреть, что хранится в переменной a, то оказывается, что там изначально вместо 555565 31277, отсюда и 2 в ответе
Если записать код так:
var a, b,c, min :Int64;
то все начинает работать правильно
С Longint тоже все правильно работает, в общем проблема в типе integer, используйте лучше платформонезависимый тип
Похоже у вас integer - это Smallint, а его для числа 555565 маловато :)