Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
27th
Фев
Необходимо расположить эти числа в порядке возрастания сумм их цифр
Posted by obzor under Delphi
Задано N (1<N<6) различных целых положительных чисел, каждое из которых меньше числа 1000. Необходимо расположить эти числа в порядке возрастания сумм их цифр. При этом для любой пары чисел с одинаковой суммой цифр первым должно следовать меньшее из этих чисел. Количество чисел и их значения вводятся с клавиатуры.
Сортировкой пузырьком
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.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)