
СРОЧНО!!!ПОМОГИТЕ!!!СИРИУС!!!С++ Сортировка по сумме цифр Напишите программу, которая сортирует
натуральные числа в массиве по убыванию суммы цифр десятичной записи числа. При равенстве сумм цифр числа должны сохранить исходный порядок. Входные данные Первая строка содержит размер массива N. Во второй строке через пробел задаются N чисел — элементы массива. Гарантируется, что 0 Выходные данные Программа должна вывести в одной строке элементы массива, отсортированного в порядке убывания суммы цифр десятичной записи числа, разделив их пробелами. Примеры Ввод Вывод 6 9 21 32 55 81 11 55 9 81 32 21 11

Ответы на вопрос

Ответ:
ввод/вывод тест прошел, результат положительный
Объяснение:
#include <iostream>
#include <algorithm>
using namespace std;
int sum(int a)
{
int tmp=0;
while (a!=0)
{
tmp += a % 10;
a /= 10;
}
return tmp;
}
int main(void)
{
size_t size; cin >> size;
int* arr = new int[size];
for (size_t i = 0; i < size; ++i){cin >> arr[i];}
sort(arr, arr + size, [](int& a, int& b)
{
return sum(a) > sum(b);
});
for (size_t i = 0; i < size; ++i) { cout<<arr[i]<<" "; }
delete[] arr;
arr = nullptr;
return EXIT_SUCCESS;
}



Для решения данной задачи можно использовать следующий алгоритм:
1. Считываем размер массива N. 2. Считываем элементы массива и сохраняем их в отдельный массив. 3. Создаем функцию, которая будет вычислять сумму цифр числа. 4. Создаем функцию, которая будет сравнивать суммы цифр двух чисел. 5. Проходим по всем элементам массива и вычисляем сумму цифр каждого числа, сохраняя пары (число, сумма цифр) в новый массив. 6. Сортируем новый массив в порядке убывания суммы цифр, используя функцию сравнения. 7. Выводим отсортированные элементы массива.
Ниже представлен код на языке Python, реализующий данный алгоритм:
```python def calculate_digit_sum(num): # Функция для вычисления суммы цифр числа digit_sum = 0 while num > 0: digit_sum += num % 10 num //= 10 return digit_sum
def compare_digit_sums(a, b): # Функция для сравнения сумм цифр двух чисел if a[1] > b[1]: return -1 elif a[1] < b[1]: return 1 else: return 0
# Считываем размер массива N = int(input())
# Считываем элементы массива и сохраняем их в отдельный массив numbers = list(map(int, input().split()))
# Создаем новый массив с парами (число, сумма цифр) numbers_with_sums = [(num, calculate_digit_sum(num)) for num in numbers]
# Сортируем новый массив в порядке убывания суммы цифр numbers_with_sums.sort(key=lambda x: x[1], reverse=True)
# Выводим отсортированные элементы массива for num, _ in numbers_with_sums: print(num, end=' ') ```
Пример работы программы:
``` Ввод: 6 9 21 32 55 81 11
Вывод: 55 9 81 32 21 11 ```
В данном примере размер массива равен 6, а элементы массива - 9, 21, 32, 55, 81, 11. После сортировки по убыванию суммы цифр получаем массив: 55, 9, 81, 32, 21, 11.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili