Вот два варианта решения: 1)В первом варианте программа выдает неверный ответ, если в числе есть хотя бы один ноль.
var a, n, i, min, tmp, m: integer;
begin m := 1; read(a); tmp := a; n := 0; min := 10; while tmp > 0 do begin n := n + 1; if(tmp mod 10 < min) then min := tmp mod 10; tmp := tmp div 10; end; for i := 1 to n do m := m * 10; a := a + (min * m); a := a * 10; a := a + min; write(a); end.
2)Второй вариант с использованием строки:
var s: string; i, min: integer;
begin readln(s); min := 10; for i := 1 to length(s) do if(strtoint(s[i]) < min) then min := strtoint(s[i]); s := s + inttostr(min); s := inttostr(min) + s; writeln(s); end.
ДЗ для ВЕРЫ ВИКТОРОВНЫ:
Объяснение:
Var I, N, m: integer;
{Выводит таблицу квадратов до N числа}
Begin
Readln(N); //Что вводим в этой строке и зачем? Как можно подсказать пользователю, что ввести?
{Вводим до какого числа нам нужно получить квадрат; Подсказать можно через WRITELN}
Writeln('Таблица квадратов чисел от 1 до N'); //Сколько раз выполняется этот оператор?
{Один раз}
For i:=1 to N do //Сколько раз выполнится цикл?
{N раз}
Begin //Зачем снова писать операторные скобки?
{Затем, что это цикл, который всегда обособляется и отделяет от остальных операторов}
m:=i*I;
Writeln(I,' ',m); //Как по-другому оставить пробелы между столбиками?
{Можно сделать так - Writeln(I:3,m:16);}
End;
End.
1)В первом варианте программа выдает неверный ответ, если в числе есть хотя бы один ноль.
var
a, n, i, min, tmp, m: integer;
begin
m := 1;
read(a);
tmp := a;
n := 0;
min := 10;
while tmp > 0 do
begin
n := n + 1;
if(tmp mod 10 < min) then min := tmp mod 10;
tmp := tmp div 10;
end;
for i := 1 to n do
m := m * 10;
a := a + (min * m);
a := a * 10;
a := a + min;
write(a);
end.
2)Второй вариант с использованием строки:
var
s: string;
i, min: integer;
begin
readln(s);
min := 10;
for i := 1 to length(s) do
if(strtoint(s[i]) < min) then min := strtoint(s[i]);
s := s + inttostr(min);
s := inttostr(min) + s;
writeln(s);
end.