Другие языки программирования и технологии

Программа на Си, С++

Дана квадратная матрица. Отсортировать столбцы по убыванию количества отрицательных элементов в них.
#include < iostream >
#include < iomanip >
#include < ctime >
#include < algorithm >

int main() {
const size_t n = 6;// Размер матрицы
int arr[n][n];// Матрица
using Counter = std::pair< size_t, size_t >;// Пара <индекс столбца, счетчик отричательных элементов>
Counter counters[n];// Массив пар

for (size_t i = 0; i < n; i++) {
counters[i].first = i;
counters[i].second = 0;
}

srand((unsigned)time(nullptr));
for (size_t i = 0; i < n; i++) {// Заполнение случайными числами и вывод
for (size_t j = 0; j < n; j++) {
arr[i][j] = -50 + rand() % 101;
if (arr[i][j] < 0)
counters[j].second++;// Подсчет
std::cout << std::setw(4) << arr[i][j];
}
std::cout << '\n';
}

std::sort(counters, counters + n, [](const Counter& a, const Counter& b) {
return a.second > b.second;
});

int sortedArr[n][n];// Новая отсортированная матрица

for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < n; j++)
sortedArr[j][i] = arr[j][counters[i].first];
}

std::cout << '\n';
for (size_t i = 0; i < n; i++) {// Вывод новой матрицы
for (size_t j = 0; j < n; j++)
std::cout << std::setw(4) << sortedArr[i][j];
std::cout << '\n';
}

return 0;
}
АТ
Алексей Торопов
20 861
Лучший ответ
while(s != "Пока сам не напишешь")
{
cout << "Никто это не сделает за вас" << endl;
}