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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2016, 14:11   #1
Noconnecting
 
Регистрация: 27.02.2016
Сообщений: 4
По умолчанию Необходимо расположить эти числа в порядке возрастания сумм их цифр

Del. Вопрос решен, тему можно закрыть.

Последний раз редактировалось Noconnecting; 27.02.2016 в 15:54.
Noconnecting вне форума Ответить с цитированием
Старый 27.02.2016, 14:31   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

1. на этапе вычисления суммы цифр - заносишь каждую сумму в елемент i массива, например, SE.
2. сортируешь SE пузырьком, только вмести с swap'ом SEмассива, меняешь аналогические элементы

Цитата:
При этом для любой пары чисел с одинаковой суммой цифр первым должно следовать меньшее из этих чисел.
а эту часть сделаем после того как просто отсортируешь N
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 27.02.2016, 14:49   #3
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Держи
Сортировкой пузырьком
Код:
const n = 6;
type
chis = record 
chi,suma:integer; \\chi для самого числа, suma - для его суммы
end;
var
ch:array[1..n] of chis;
i,j,k,x,sum,m,k1,k2:integer;
s:string;
begin
for i:=1 to n do \\читаем числа в виде строки, преобразовываем в числа, считаем суммы и пихаем все в массив
begin
  Readln(s);
  sum:=0;
  k:=length(s);
  for j:=1 to k do
  begin
    val(s,m);
    val(s[j],x);
    sum:= sum + x;
    if j = k
    then
    begin
      ch[i].suma:=sum;
      ch[i].chi:=m;
    end;
  end;
end;
for i:=1 to n - 1 do\\сортировка, пущай немного извращенная
  for j:=1 to n-i do
    if ch[j].suma>ch[j+1].suma then
    begin
      k1:=ch[j].suma;
      k2:=ch[j].chi;
      ch[j].suma:=ch[j+1].suma;
      ch[j].chi:=ch[j+1].chi;
      ch[j+1].suma:=k1;
      ch[j+1].chi:=k2;
    end;
for i:=1 to n do \\если две одинаковых суммы
begin
  if i=n then break;
  if ch[i].suma = ch[i+1].suma then
    if ch[i].chi<ch[i+1].chi then continue
    else if ch[i].chi>ch[i+1].chi then
    begin
      k1:=ch[i].suma;
      k2:=ch[i].chi;
      ch[i].suma:=ch[i+1].suma;
      ch[i].chi:=ch[i+1].chi;
      ch[i+1].suma:=k1;
      ch[i+1].chi:=k2;
    end;
end;
for i:=1 to n do
Writeln(ch[i].chi);
reAdln;
end.

Последний раз редактировалось dimon_snake; 27.02.2016 в 14:51.
dimon_snake вне форума Ответить с цитированием
Старый 27.02.2016, 15:15   #4
Noconnecting
 
Регистрация: 27.02.2016
Сообщений: 4
По умолчанию

Отлично, задачу решил.

Последний раз редактировалось Noconnecting; 27.02.2016 в 15:55.
Noconnecting вне форума Ответить с цитированием
Старый 27.02.2016, 15:16   #5
Noconnecting
 
Регистрация: 27.02.2016
Сообщений: 4
По умолчанию

Заработало.

Последний раз редактировалось Noconnecting; 27.02.2016 в 15:55.
Noconnecting вне форума Ответить с цитированием
Старый 27.02.2016, 15:41   #6
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

У меня программа моя работает. А относительно n, нетрудно дописать:
Код:
Readln(n);
и убрать константу n, а длину массива поставить под максимум(6).
Какой паскаль?
dimon_snake вне форума Ответить с цитированием
Старый 27.02.2016, 15:45   #7
Noconnecting
 
Регистрация: 27.02.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от dimon_snake Посмотреть сообщение
У меня программа моя работает. А относительно n, нетрудно дописать:
Код:
Readln(n);
и убрать константу n, а длину массива поставить под максимум(6).
Какой паскаль?
PascalABC.NET. Все у меня наконец то получилось, всем спасибо за помощь. Очень помогли я переделал свою программу и теперь все отлично выводит.

Последний раз редактировалось Noconnecting; 27.02.2016 в 15:54.
Noconnecting вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расположить введенные с клавиатуры четыре целых числа в порядке возрастания и в порядке убывания tima58 Помощь студентам 7 20.03.2015 13:47
Расположить потребителей в порядке возрастания Санко Паскаль, Turbo Pascal, PascalABC.NET 0 29.05.2014 13:14
Расположить 3 числа в порядке возрастания locked Паскаль, Turbo Pascal, PascalABC.NET 4 10.10.2013 09:36
расположить числа в порядке возрастания Julila Помощь студентам 4 04.01.2011 19:32
Расположить элементы массива в порядке возрастания Klik_1602 Помощь студентам 2 04.01.2011 14:59