Консультация № 189556
06.06.2016, 21:05
0.00 руб.
0 1 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Дано шестизначное число N. Найти новое трехзначное число путем вычеркивания трех минимальных чисел (например, старое – 617283, новое – 678)
Помогите пожалуйста с задачей в паскале
Помогите пожалуйста решить задачу

Обсуждение

давно
Старший Модератор
31795
6196
07.06.2016, 09:53
общий
это ответ
Здравствуйте, maxim387!

Смотрите приложение:
[code lang=pascal h=200]var
a:string;
b:longint;
{рекурсивная функция поиска и удаления минимальной цифры в числе}
function KillMin(a,b:longint):longint;
begin
if a>0 then{пока А больше нуля продолжаем поиск}
{минимальная цифра не совпадает - игнорируем}
if a mod 10<>b then KillMin:=KillMin(a div 10,b)*10+(a mod 10)
{минимальная цифра совпадает - удаляем}
else KillMin:=KillMin(a div 10,b)
{конец рекурсии}
else KillMin:=a
end;
{функция поиска минимальной цифры в числе}
function FindMin(a:longint):longint;
var
b,c:longint;
begin
b:=a mod 10;{пока В минимальная цифра}
c:=a div 10;{остальное число}
while c>0 do
begin
if c mod 10<b then b:=c mod 10;{теперь В новая минимальная}
c:=c div 10;{к следующим цифрам}
end;
FindMin:=KillMin(a,b);{возвращаем результат без минимальной цифры}
end;
begin
{ввод числа и контроль ввода}
repeat
repeat
write('please enter 6 numbers:');
readln(a);
until length(a)=6;{должно быть 6-ть цифр}
b:=0;
{перевод строки в число и контроль повторений цифр}
while(length(a)>0)and(pos(a[1],copy(a,2,length(a)-1))=0)do
begin
b:=b*10+ord(a[1])-ord('0');
delete(a,1,1);
end;
until length(a)=0;{число правильное длина строки равна нулю}
{выводим результат}
writeln('result:',FindMin(FindMin(FindMin(b))));
end.[/code]
ps:вопросы задавайте в минифорум.
Удачи!
5
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа