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

Создать функцию нахождения суммы диагоналей квадратной матрицы и сортировки ее первого столбца
двумерный масив(написать на языке с++)

Показать ответ
Ответ:
Диана149018
Диана149018
11.09.2020 12:19

#include <iostream>

#include <time.h>

#include <algorithm>

#include <vector>

#include <variant>

using namespace std;

pair<int**, vector<int>> sum_and_sort(int** mat, int n) {

int d1sum = 0, d2sum = 0;

vector<int> arr;

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

 arr.push_back(mat[i][0]);

for (const auto& i : arr)

 sort(arr.begin(), arr.end(), greater <>());

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

 mat[i][0] = arr[i];

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

 for (size_t j = 0; j < n; ++j)

 {

  if (i == j)

   d1sum += mat[i][j];

  if (i + j == (n - 1))

   d2sum += mat[i][j];

 }

vector<int> arr2;

arr2.push_back(d1sum);

arr2.push_back(d2sum);

return make_pair(mat, arr2);

}

void printMat(int** mat, int n)

{

for (int i = 0; i < n; i++) {

 for (int j = 0; j < n; j++)

  cout << mat[i][j] << " ";

 cout << endl;

}

}

int main()

{

srand(time(0));

setlocale(LC_ALL, "Russian");

int n;

cout << "Введите максимальный мазмер матрицы\n";

cin >> n;

int d1sum = 0, d2sum = 0;

int** matrix = new int* [n];

int** matrix2 = new int* [n];

vector<int> sum_d1_d2;

pair<int**, vector<int>> returnf;

for (int i = 0; i < n; ++i) {

 matrix[i] = new int[n];

 matrix2[i] = new int[n];

}

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

 for (size_t j = 0; j < n; j++)

  matrix[i][j] = rand() % 100 + 1;

}

printMat(matrix, n);

returnf = sum_and_sort(matrix,n);

matrix2 = returnf.first;

sum_d1_d2 = returnf.second;

cout << endl;

printMat(matrix2, n);

cout << "Сумма диагоналей после сортировки:\n";

for (int i = 0; i < sum_d1_d2.size(); i++) {

 cout << sum_d1_d2[i] << " ";

}

return 1;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота