Почему задачу нужно решать без использования строк - понятно, а почему нельзя использовать тип boolean - загадка. С учетом пожеланий программа может быть такой: var n,k:integer; begin write('n=');readln(n); k:=0; while n>0 do begin if (n mod 10=2)or(n mod 10=5) then k:=1; n:=n div 10; end; if k=0 then writeln('В числе нет 2 и 5') else writeln('В числе есть 2 и/или 5'); end.
2 votes Thanks 3
petyaGavrikov
Условие задачи можно понять по-разному. Можно - что надо разделять, а можно - что нет, а можно - что требуется, чтобы цифры в числе были обе (и 2, и 5).
petyaGavrikov
var n,k2,k5:integer; begin write('n=');readln(n); k2:=0; k5:=0; while n>0 do begin case n mod 10 of 2:inc(k2); 5:inc(k5); end; n:=n div 10; end; if k2=0 then writeln('В числе нет 2') else writeln('В числе есть 2'); if k5=0 then writeln('В числе нет 5') else writeln('В числе есть 5'); end.
Answers & Comments
Verified answer
Самый простой по-моему вариантVerified answer
Почему задачу нужно решать без использования строк - понятно, а почему нельзя использовать тип boolean - загадка. С учетом пожеланий программа может быть такой:var n,k:integer;
begin
write('n=');readln(n);
k:=0;
while n>0 do
begin
if (n mod 10=2)or(n mod 10=5) then k:=1;
n:=n div 10;
end;
if k=0 then writeln('В числе нет 2 и 5')
else writeln('В числе есть 2 и/или 5');
end.
begin
write('n=');readln(n);
k2:=0; k5:=0;
while n>0 do
begin
case n mod 10 of
2:inc(k2);
5:inc(k5);
end;
n:=n div 10;
end;
if k2=0 then writeln('В числе нет 2') else writeln('В числе есть 2');
if k5=0 then writeln('В числе нет 5') else writeln('В числе есть 5');
end.