Вопрос по информатике:
Помогите пожалуйста... хотя бы составить программу.
Дано два натуральных числа N и M.
Написать программу для определения
наименьшего из чисел, составленных из цифр данных чисел. Незначащих
нулей в найденном числе быть не должно.
Формат входных данных:
Входной
файл input.txt содержит два натуральных числа N (10 <= N <=
10^100) и M (10 <= M <= 10^100), разделенных одним пробелом.
Формат выходных данных:
Выходной файл output.txt должен содержать найденное наименьшее число.
- 23.11.2015 08:48
- Информатика
- remove_red_eye 17786
- thumb_up 11
Ответы и объяснения 2
Var x, y, j, i,b,a:longint;
g, f: text;
begin
assign (g, 'input.txt');
assign (f, 'output.txt');
reset (g);
read (g, x, y);
close (g);
rewrite(f);
while x>=0 do begin
b:=(x mod 100) div 10;
if b=0 then break;
a:=x mod 10;
if a>b then a:=b;
x:=x div 10;
end;
while y>=0 do begin
j:=(y mod 100) div 10;
if j=0 then break;
i:=y mod 10;
if i>j then i:=j;
y:=y div 10;
end;
if aif a>i then write(f, i);
close (f);
end.
- 24.11.2015 21:58
- thumb_up 29
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, ns: integer;
s, M, N: string;
ml, nl: integer;
f: text;
begin
Assign(f,'input.txt');
Reset(f);
Readln(f,s);
Close(f);
Assign(f,'output.txt');
Rewrite(f);
ns := Length(s);
p := Pos(' ', s);
ml := p - 1;
M := Copy(s, 1, ml);
ShellStr(M);
TrimNullsLeft(M);
ml := Length(M);
N := Copy(s, p + 1, ns - p);
ShellStr(N);
TrimNullsLeft(N);
nl := Length(N);
if ml < nl then Writeln(f,M)
else if nl < ml then Writeln(f,N)
else if M < N then Writeln(f,M) else Writeln(f,N);
Close(f);
Writeln('Программа завершила работу')
end.
- 25.11.2015 10:06
- thumb_up 34
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.