begin read(n); b := n mod 10; n := n div 10; a := n mod 10; n := n div 10; while (a > b) and (n <> 0) do begin b := a; a := n mod 10; n := n div 10; end; if a > b then writeln('Цифры числа расположены по убыванию') else writeln('Цифры числа расположены не по убыванию') end.
2 votes Thanks 3
ManyGames
В вопросе не было сказано, какие числа должны быть
VTOP
у ведь ясно что максимальное число соответствующее условию 987654321
VTOP
У тебя хороший метод, но боюсь,что в школе такого не проходят... :(
ManyGames
Проходят. Цикл for и логический тип данных точно.
VTOP
Не логический тип не проходят(сам учился знаю!) Массив не изучают(ближе к 11 классу) и типы переменных знают только integer and real(Кого не спрашивал - все отвечали так)
KanakinaSveta
Мне это задание в универе задали, я не знаю как тут выбрать студенческий уровень, и я не знаю, а можете через repeat программу написать и блок-схему сделать?
ManyGames
Хорошо, я щас изменю решение, чтоб через repeat всё было. Но ещё и объясню, как работает оператор while. В программе запись такова: while (a > b) and (n <> 0) do... В переводе на русский язык ПОКА a>b и n не равно нулю ВЫПОЛНЯТЬ (оператор). То есть цикл будет выполняться, пока a>b и n не равно нулю. А когда хоть одно из этих высказываний станет ложным, цикл прекратится (вспомни алгебру логики, 1 & 0 = 0).
ManyGames
Ааа, уже не получится изменить. Но вот, я написал через repeat:
begin read(n); b := n mod 10; n := n div 10; a := n mod 10; n := n div 10; repeat if not ((a > b) and (n <> 0)) then break; b := a; a := n mod 10; n := n div 10; until ((a > b) and (n <> 0)); if a > b then writeln('Цифры числа расположены по убыванию') else writeln('Цифры числа расположены не по убыванию') end.
VTOP
Vara,b,i,k,max:integer;beginreadln(a);max:=0;k:=0;while a<>1 do begin if (a mod 10) > max then beginmax:=(a mod 10);endelse k+=1; a:=a div 10;if a<10 then begin if (a mod 10) > max then beginmax:=(a mod 10);endelse k+=1;a:=1; end;end;if k=0 then writeln('Убывание') else writeln('Неубывание');end.
2 votes Thanks 1
VTOP
var a,b,i,k,max:integer; begin readln(a); max:=0; k:=0; while a<>1 do begin
if (a mod 10) > max then begin max:=(a mod 10); end else k+=1;
a:=a div 10; if a<10 then begin if (a mod 10) > max then begin max:=(a mod 10); end else k+=1; a:=1;
end; end; if k=0 then writeln('Убывание') else writeln('Неубывание'); end.
Answers & Comments
n: integer;
a, b: byte;
begin
read(n);
b := n mod 10;
n := n div 10;
a := n mod 10;
n := n div 10;
while (a > b) and (n <> 0) do
begin
b := a;
a := n mod 10;
n := n div 10;
end;
if a > b then
writeln('Цифры числа расположены по убыванию')
else
writeln('Цифры числа расположены не по убыванию')
end.
n: integer;
a, b: byte;
begin
read(n);
b := n mod 10;
n := n div 10;
a := n mod 10;
n := n div 10;
repeat
if not ((a > b) and (n <> 0)) then break;
b := a;
a := n mod 10;
n := n div 10;
until ((a > b) and (n <> 0));
if a > b then
writeln('Цифры числа расположены по убыванию')
else
writeln('Цифры числа расположены не по убыванию')
end.
if (a mod 10) > max then beginmax:=(a mod 10);endelse k+=1;
a:=a div 10;if a<10 then begin if (a mod 10) > max then beginmax:=(a mod 10);endelse k+=1;a:=1;
end;end;if k=0 then writeln('Убывание') else writeln('Неубывание');end.
a,b,i,k,max:integer;
begin
readln(a);
max:=0;
k:=0;
while a<>1 do begin
if (a mod 10) > max then begin
max:=(a mod 10);
end
else k+=1;
a:=a div 10;
if a<10 then begin
if (a mod 10) > max then begin
max:=(a mod 10);
end
else k+=1;
a:=1;
end;
end;
if k=0 then writeln('Убывание')
else writeln('Неубывание');
end.