alarm
Задайте вопрос
Информатика
DamgaardH

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

ответы: 1
Зарегистрируйтесь, чтобы добавить ответ
Ответ:

#include <iostream>

using namespace std;

unsigned DigitSum( unsigned x ) {

unsigned sum = 0;

while ( x != 0 ) {

sum += x % 10;

x /= 10;

}

return sum;

}

bool Comparison( const unsigned a, const unsigned b ) {

return DigitSum( a ) < DigitSum( b );

}

// третий параметр указатель на функцию сравнения для сортировки

void InsertionSort( unsigned long *arr, size_t size, bool (*compareFunc)( const unsigned, const unsigned ) ) {

for ( size_t i = 1; i < size; ++i )

for ( size_t j = i; j > 0 && Comparison( arr[ j - 1 ], arr[ j ] ); --j )

swap( arr[ j - 1 ], arr[ j ] );

}

int main() {

const size_t maxCount = 10000;

unsigned long* arr = new unsigned long[ maxCount ];

size_t count = 0;

cin >> count;

for ( size_t i = 0; i < count; ++i ) {

cin >> arr[ i ];

}

// сортируем массив, указывая какая функция для сравнения элементов используется

InsertionSort( arr, count, Comparison );

for ( size_t i = 0; i < count; ++i )

cout << arr[ i ] << " ";

delete[] arr;

return 0;

}

дайте 5 звёзд позязя

390
StraubKat
Чтобы ответить необходимо зарегистрироваться.

Другие вопросы: - Информатика

C++ ДАЮ 40 поинтов Подскажите,

написать программу в C# по типу

Найдите разницу между двумя спис

С++ Ровно К обменов (Сириус) 40

КуМир, задание 5.k, исполнитель

КуМир. Робот находится внутри уз

Контакты
Реклама на сайте