Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2015, 23:48   #1
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию Задано натуральное число N. Найти наименьшее и наибольшее число, состоящее из тех же цифр и в таком же количестве, что и N

Задано натуральное число N. Найти

наименьшее и наибольшее число, состоящее из тех же цифр и в таком же количестве, что и N.

Входные данные
Вы вводите с клавиатуры число N.

Выходные данные
Вы выводите в одной строке наименьшее число, а через пробел - наибольшее число.

Пример входных и выходных данных
Вход: 7051
Выход: 1057 7510
Подскажите алгоритм
dimon_snake вне форума Ответить с цитированием
Старый 17.11.2015, 09:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Выход: 1057 7510
Неправильно. Наименьшее будет 0157.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2015, 09:57   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

алгоритм достаточно простой
Наибольшее число - отсортировать цифры в убывающем порядке.
Наименьшее число - отсортировать цифры в возрастающем порядке,
но потом переставить первую НЕНУЛЕВУЮ цифру в начало числа.

например, задано число 6985000, найдём наименьшее число.
после сортировки в возрастающем порядке получаем 0005689
очевидно, что с ведущими нулями число быть не может, они по правилам записи чисел должны быть отброшены. Чтобы это не случилось, переставляем цифру 5 в начало:
5000689
это и есть наименьшее число.
всё.


Цитата:
Неправильно. Наименьшее будет 0157.
пример специально привели, чтобы показать, что в получаемых числах разрядность должна быть такая же, как и в исходном числе.
если ввели четырёхзначное число, то и на выходе должно быть четырёхзначное число
а, извините, 0157 - это ТРЁХЗНАЧНОЕ число, ведущий ноль отбрасывается по правилам записи чисел.

Последний раз редактировалось Serge_Bliznykov; 17.11.2015 в 09:59.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.11.2015, 10:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
0157 - это ТРЁХЗНАЧНОЕ число
Хе, ноль я для чего оставил? Или ты скажешь что числа с нулем впереди быть не может? А у нас так хитро преподы ловили на подобных приколах...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2015, 10:35   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Или ты скажешь что числа с нулем впереди быть не может?
скажу. не может.
Всех, кто спорит - попрошу подсчитать количество трёхзначных чисел.
(например,
http://znanija.com/task/6851335
http://lektsiopedia.org/lek-46488.html
)

кроме того, то, к чему Вы придираетесь, дано как ОБРАЗЕЦ ПРАВИЛЬНОГО решения.

Будете продолжать спорить?!

Последний раз редактировалось Serge_Bliznykov; 17.11.2015 в 10:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.11.2015, 11:11   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А у нас так хитро преподы ловили на подобных приколах
Преподы-приколисты? И так и да - 0157 - это ТРЁХЗНАЧНОЕ число
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.11.2015, 11:36   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Будете продолжать спорить?!
Неа. Продолжать будет препод )
А я просто тих посмеюсь.
Цитата:
0157 - это ТРЁХЗНАЧНОЕ число
Ну да, ноль уже ничего не значит? ))
Ладно. Проехали. Когда нибудь сами нарветесь на такой прикол на каком-нибудь acmp.хрю, потом не жалуйтесь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2015, 11:48   #8
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

если по заданию то так можно
Код:
var
	n:integer;
	s:string;
	
	
	
function intToStr(i:longInt):string;
	var s:string;
begin
 str(i,s);
 IntToStr:=s;
end;

Function Sort(NapSort:boolean;s:string):string;
	var i,k:byte;
		a:Char;
Begin
if napSort then
begin
 For k := 1 To  length(s)-1 Do
   For i := 1 To length(s)-k Do
     If s[i] > s[i+1] Then
       Begin
         A:=s[i];
         s[i]:=s[i+1];
         s[i+1]:=A ;
       End;
end
	   else
		begin
		 For k := 1 To  length(s)-1 Do
		   For i := 1 To length(s)-k Do
			 If s[i] < s[i+1] Then
			   Begin
			    A:=s[i];
				s[i]:=s[i+1];
				s[i+1]:=A ;
			   End;
		end;
Sort:=s;
end;

Function nulInd(s:string):byte;
	var i:byte;
begin
 i:=1;
 while s[i]='0' do
	i:=i+1;
 nulInd:=i;

end;

begin
 Write('vvedite n:');ReadLn(n);
 s:=IntToStr(n);
 s:=Sort(true,s);
 if nulInd(s)>1 then
	begin
	 Insert ((copy(s,1,(nulInd(s)))),s,(nulInd(s)+2));
	 Delete(s,1,nulInd(s));
	end; 
 Write(s,' ') ;
 Writeln(Sort(false,s)) ;  
 readln; 
end.
а если как хочет Stilet то так
Код:
	var
	n:integer;
	s:string;
	
	
	
function intToStr(i:longInt):string;
	var s:string;
begin
 str(i,s);
 IntToStr:=s;
end;

Function Sort(NapSort:boolean;s:string):string;
	var i,k:byte;
		a:Char;
Begin
if napSort then
begin
 For k := 1 To  length(s)-1 Do
   For i := 1 To length(s)-k Do
     If s[i] > s[i+1] Then
       Begin
         A:=s[i];
         s[i]:=s[i+1];
         s[i+1]:=A ;
       End;
end
	   else
		begin
		 For k := 1 To  length(s)-1 Do
		   For i := 1 To length(s)-k Do
			 If s[i] < s[i+1] Then
			   Begin
			    A:=s[i];
				s[i]:=s[i+1];
				s[i+1]:=A ;
			   End;
		end;
Sort:=s;
end;

begin
 Write('vvedite n:');ReadLn(n);
 s:=IntToStr(n);
 Write(Sort(True,s),' ') ;
 Writeln(Sort(false,s)) ;  
 readln; 
end.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 17.11.2015, 11:54   #9
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
uses crt;
var n : longint;
s, saz,sza : string;
i,j:integer;
buf:char;
begin
clrscr;
write('Input N: ');readln(n);
n := abs(n);
str(n,s);
saz:=s;
sza:=s;
for i:= 1 to length(s) do
for j:=i to length(s) do
begin
     if saz[i]>saz[j] then
        begin
                buf:=saz[i];
                saz[i]:=saz[j];
                saz[j]:=buf
        end;

     if sza[i]<sza[j] then
        begin
                buf:=sza[i];
                sza[i]:=sza[j];
                sza[j]:=buf
        end;
end;
  if saz[1] = '0' then
     begin
          for j:= 2 to length(saz) do
           if saz[j] <> '0' then
              begin
                   saz[1] := saz[j];
                   saz[j] := '0';
                   break;
              end;
     end;
writeln('AZ: ',saz);
writeln('ZA: ',sza);
readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 17.11.2015, 23:38   #10
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Спасибо большое.
dimon_snake вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В заданном строкой S натуральном N-разрядном числе упорядочить цифры так, чтобы получить наибольшее число из тех же цифр kea75 Паскаль, Turbo Pascal, PascalABC.NET 5 07.04.2014 14:44
Задано натуральное число N. Написать рекурсивную функцию для вычисления количества цифр заданного числа. kirito_17 Помощь студентам 2 20.11.2013 15:55
Найти наименьшее натуральное число n, представимое двумя различными Zhasik Паскаль, Turbo Pascal, PascalABC.NET 8 08.03.2013 01:54
Задано натуральное число имеющее от 2 до 9 цифр Павел Шилин Помощь студентам 8 22.10.2012 20:21
Си. Задано натуральное число. В нем выделить максимальную по длине группу подряд идущих четных цифр Veina Помощь студентам 20 23.11.2009 17:00