Выяснить, упорядочены ли цифры в записи числа по убыванию. Написать программу в...

0 голосов
216 просмотров

Выяснить, упорядочены ли цифры в записи числа по убыванию.
Написать программу в PascalABC.NET и нарисовать блок-схему.


Информатика (204 баллов) | 216 просмотров
0

Ну выясню я, а что дальше?

0

Что с этим знанием делать?

0

Выяснить - вывести строку упорядочены числа по убыванию или нет

Дано ответов: 2
0 голосов
Правильный ответ

Var
  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.

(720 баллов)
0

В вопросе не было сказано, какие числа должны быть

0

у ведь ясно что максимальное число соответствующее условию 987654321

0

У тебя хороший метод, но боюсь,что в школе такого не проходят... :(

0

Проходят. Цикл for и логический тип данных точно.

0

Не логический тип не проходят(сам учился знаю!) Массив не изучают(ближе к 11 классу) и типы переменных знают только integer and real(Кого не спрашивал - все отвечали так)

0

Мне это задание в универе задали, я не знаю как тут выбрать студенческий уровень, и я не знаю, а можете через repeat программу написать и блок-схему сделать?

0

Хорошо, я щас изменю решение, чтоб через repeat всё было. Но ещё и объясню, как работает оператор while. В программе запись такова: while (a > b) and (n <> 0) do... В переводе на русский язык ПОКА a>b и n не равно нулю ВЫПОЛНЯТЬ (оператор). То есть цикл будет выполняться, пока a>b и n не равно нулю. А когда хоть одно из этих высказываний станет ложным, цикл прекратится (вспомни алгебру логики, 1 & 0 = 0).

0

Ааа, уже не получится изменить. Но вот, я написал через repeat:

0

var
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.

0

Спасибо))

0 голосов

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.

(477 баллов)
0

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 <br>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.

0

Спасибо)