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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 17:12   #1
Escada
Новичок
Джуниор
 
Регистрация: 10.12.2012
Сообщений: 5
По умолчанию Паскаль вывод цифр в порядке убывания.

пользователь вводит конечное число N, нужно все трехзначные числа до N написать таким образом что бы цифры в числе стояли в порядке возрастания.
массивы использовать нельзя=(.
помогите пожалуйста.
Escada вне форума Ответить с цитированием
Старый 10.12.2012, 19:54   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Так пойдет
Код:
Function Sorted(NN : Word):Word;
Var
  a, b, c, tmp : Byte;
  res : Word;
Begin
  a := NN mod 10;
  b := NN mod 100 div 10;
  c := NN div 100;
  if (a > b) then
  Begin
    tmp := a;
    a := b;
    b := tmp;
  End;
  if (a > c) then
  Begin
    tmp := a;
    a := c;
    c := tmp;
  End;
  if (b > c) then
  Begin
    tmp := b;
    b := c;
    c := tmp;
  End;
  res := a;
  res := (res*10 + b);
  res := (res*10 + c);
  result := res
End;
Проблема только с нулями в числах
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.12.2012, 20:00   #3
Escada
Новичок
Джуниор
 
Регистрация: 10.12.2012
Сообщений: 5
По умолчанию

спасибо,а можешь объяснить
Function Sorted(NN : Word):Word; что это?а то у меня пока начальный уровень и нужно эту задачку сделать через фор.
вот что у меня пока есть
Код:
program lab3;
var a1,a2,a3,b,i:integer;
Begin
writeln ('do kakogo chisla 101-999');
readln (b);
if (b<101) and (b>999)then write ('nepravelnoe chislo') else
begin

for i:=100 to b do
begin
a1:=(i mod 100) mod 10;

a2:= (i mod 100)div 10;
a3:= i div 100;
write (' ',i,' ');
if (a1<a2) AND (a1<a3) then
begin
write (a1);
if (a2<a3) then write (a2) else write (a3)
end
else

if (a2<a1) and (a2<a3) then
begin
write (a2);
if (a1<a3) then write (a1) else write (a3)
end

else

if (a3<a1) and (a3<a2) then
begin
write (a3);
if (a1<a2) then write (a1) else write (a2)
end;
end;
end;
readln;

End.
.
но пока оно выдает ответ 100,а это не совсем близко к идеалу=)

Последний раз редактировалось Escada; 10.12.2012 в 20:15.
Escada вне форума Ответить с цитированием
Старый 10.12.2012, 20:23   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
Function Sorted(NN : Word):Word
Это объявлении подпрограммы-функции в паскале. В принципе можно и без нее обойтись. То что написали Вы, фактически просто выводит цифры, из которых состоит число, в обратном порядке. Если этого достаточно, то можно сделать так
Код:
readln (b1);
a := NN mod 10;
  b := NN mod 100 div 10;
  c := NN div 100;
  if (a > b) then
  Begin
    tmp := a;
    a := b;
    b := tmp;
  End;
  if (a > c) then
  Begin
    tmp := a;
    a := c;
    c := tmp;
  End;
  if (b > c) then
  Begin
    tmp := b;
    b := c;
    c := tmp;
  End;
Write (a,b,c)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.12.2012, 20:25   #5
Escada
Новичок
Джуниор
 
Регистрация: 10.12.2012
Сообщений: 5
По умолчанию

нужно сделать через фор,я вот не пойму почему оно выводит их в обратном порядке если должно по идее сравнивать их и выводить в зависимости от того какое меньше,нужно вывести все числа от 100 до b поменяв в них цифры местами что бы получилось минимальное число.
и сначала оно должно выводить все числа от 100 до б.
я понимаю как это должно работать но не понимаю в чем мои ошибки=\

Последний раз редактировалось Escada; 10.12.2012 в 20:28.
Escada вне форума Ответить с цитированием
Старый 10.12.2012, 20:32   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Так в чем проблема то
Код:
Readln(b1);
for i := 100 to b1 do
Begin
  a := i mod 10;
  b := i mod 100 div 10;
  c := i div 100;
  if (a > b) then
  Begin
    tmp := a;
    a := b;
    b := tmp;
  End;
  if (a > c) then
  Begin
    tmp := a;
    a := c;
    c := tmp;
  End;
  if (b > c) then
  Begin
    tmp := b;
    b := c;
    c := tmp;
  End;
 Write (i,'->',a,b,c)
End;
Это вроде то, что Вам нужно.
Например
Цитата:
251 - > 125
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.12.2012, 20:51   #7
Escada
Новичок
Джуниор
 
Регистрация: 10.12.2012
Сообщений: 5
По умолчанию

Код:
var i,a,b,c,tmp,b1: integer;
Begin

Readln(b1);
for i := 100 to b1 do
Begin
  a := i mod 10;
  b := i mod 100 div 10;
  c := i div 100;
  if (a > b) then
  Begin
    tmp := a;
    a := b;
    b := tmp;
  End;
  if (a > c) then
  Begin
    tmp := a;
    a := c;
    c := tmp;
  End;
  if (b > c) then
  Begin
    tmp := b;
    b := c;
    c := tmp;
  End;
 Write (i,'->',a,b,c)
End;
end.
выводит 100->001101->011102->012103->013104->014105->015106->016107->017108->018109->019110->011 при вводе 110
Escada вне форума Ответить с цитированием
Старый 10.12.2012, 22:49   #8
Escada
Новичок
Джуниор
 
Регистрация: 10.12.2012
Сообщений: 5
По умолчанию

спасибо за помощь,моя прога заработала,кому понадобиться пишите alexandrbaydujiy@gmail.com
Escada вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распечатать в порядке убывания нечетные числа из диапазона [ Senya Black ] Помощь студентам 4 08.05.2012 19:17
...Упорядочить этот список в порядке убывания средней оценки... Anny Kyort Паскаль, Turbo Pascal, PascalABC.NET 4 29.11.2011 19:37
Упорядочить цифры в порядке возрастания/убывания doter Общие вопросы C/C++ 2 05.10.2010 17:57
Числа в порядке убывания skiffter Общие вопросы C/C++ 10 14.09.2010 15:34