Переведите, пожалуйста, текст программы паскаля в КУМИР Задача: Разработайте алгоритм определения, является ли введённое натурал
Переведите, пожалуйста, текст программы паскаля в КУМИР
Задача: Разработайте алгоритм определения, является ли введённое натуральное число однозначным, двухзначным, трёхзначным или многозначным (больше трёх знаков – это много).
Паскаль: var write('Введите трёхзначное положительное число: '); readln(a); if (a<100) or (a>999) then write('Это не трёхзначное число. Перезапустите программу!') else Begin sum:= a mod 10 + a div 10 mod 10 + a div 100; pro:= a mod 10 * a div 10 mod 10 * a div 100; if (sum>9) and (sum<100) then Writeln('Сумма цифр числа ',a,' - двухзначное число (',sum,')') else Writeln('Сумма цифр числа ',a,' - не двухзначное число (',sum,')'); if (pro>99) and (pro<1000) then Writeln('Произведение цифр числа ',a,' - трёхзначное число (',pro,')') else Writeln('Произведение цифр числа ',a,' - не трёхзначное число (',pro,')'); if (sum mod 3) = 0 then write('Эта же сумма (',sum,') кратна трём') else write('Эта сумма (',sum,') не кратна трём'); end; End.
алг нач цел <em>a</em>, <em>sum</em>, <em>pro</em> вывод 'Введите трёхзначное положительное число: ' ввод <em>a</em> если <em>a</em><100 или <em>a</em>>999 то вывод 'Это не трёхзначное число. Перезапустите программу!' иначе <em>sum </em>:= <em>mod</em>(<em>a</em>, 10) + <em>mod</em>(<em>div</em>(<em>a</em>,10),10) + <em>div</em>(<em>a</em>,100) <em>pro </em>:= <em>mod</em>(<em>a,</em> 10) * <em>mod</em>(<em>div</em>(<em>a</em>,10),10) * <em>div</em>(<em>a</em>,100) <em>если </em><em>sum</em> > 9 и <em>sum </em>< 100 то вывод 'Сумма цифр числа ',<em>a</em>,' - двухзначное число (',<em>sum</em>,')', нс иначе вывод 'Сумма цифр числа ',<em>a</em>,' - не двухзначное число (',<em>sum</em>,')', нс все если <em>pro </em>> 99 и<em>pro </em>< 1000 то вывод 'Произведение цифр числа ',<em>a</em>,' - трёхзначное число (',<em>pro</em>,')', нс иначе вывод 'Произведение цифр числа ',<em>a</em>,' - не трёхзначное число (',<em>pro</em>,')', нс все если <em>mod</em>(<em>sum</em>, 3) = 0 то вывод 'Эта же сумма (',<em>sum</em>,') кратна трём', нс иначе вывод 'Эта сумма (',<em>sum</em>,') не кратна трём', нс все все кон
Помню в начальных классах составляли пример с завтраком :D Достать батон и колбасу -> Сделать бутерброд -> Заварить чай -> Съесть бутерброд и выпить чай Объяснить по-моему можно и самой)
Procedure ShellStr(var s: string); { сортирует символы строки методом Шелла } var i, j, n, step: integer; c: char; begin s := Trim(s); n := Length(s); step := n div 2; while step > 0 do begin for j := n - step downto 1 do begin i := j; while i <= n - step do begin if s[i] > s[i + step] then begin c := s[i]; s[i] := s[i + 1]; s[i + 1] := c end; i := i + step end end; step := step div 2 end end;
procedure TrimNullsLeft(var s: string); { Усекает левые (незначащие нули) в строке s } var i, n: integer; begin i := 1; n := Length(s); while (s[i] = '0') do i := i + 1; s := Copy(s, i, n - i + 1) end;
var p: integer; s, M, N: string; f: text;
begin Assign(f, 'input.txt'); Reset(f); Readln(f, s); Close(f); Assign(f, 'output.txt'); Rewrite(f); s := Trim(s); p := Pos(' ', s); M := Copy(s, 1, p - 1); N := Copy(s, p + 1, Length(s) - p); s := M + N; ShellStr(s); TrimNullsLeft(s); Writeln(f, s); Close(f); Writeln('Программа завершила работу') end.