Язык c++. сформировать двухмерный динамический массив целых чисел. переставить строки массива в соответствии с увеличением суммы элементов строк.

12323543654 12323543654    1   28.09.2019 20:10    3

Ответы
dcherbaev7771 dcherbaev7771  09.10.2020 01:15

#include <iostream>

#include <vector>

#include <random>


int rand_num(int min, int max)

{

std::random_device rd;    

std::mt19937 rng(rd());    

std::uniform_int_distribution<int> uni(min, max);


auto random_integer = uni(rng);


return random_integer;

}


int sum_vec(std::vector<int> v)

{

int sum = 0;

for (auto &num : v)

{

 sum += num;

}

return sum;

}


void print_vec_2d(const std::vector<std::vector<int>>& v)

{

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

{

 for (int j = 0; j < v[i].size(); ++j)

 {

  std::cout << v[i][j] << " ";

 }

 std::cout << std::endl;

}

}


void sort_vec_2d(std::vector<std::vector<int>>& v)

{

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

{

 for (int j = i + 1; j < v.size(); ++j)

 {

  if (sum_vec(v[i]) > sum_vec(v[j]))

  {

   std::swap(v[i], v[j]);

  }

 }

}

}


void rand_vec_2d(std::vector<std::vector<int>>& v, int min, int max)

{


v.resize(rand_num(min, max));


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

{

 for (int j = 0; j < rand_num(min, max); ++j)

 {

  v[i].push_back(rand_num(min, max));

 }

}

}


int main()

{

setlocale(LC_ALL, "Russian");

std::vector<std::vector<int>> nums;

rand_vec_2d(nums, 1, 10);


std::cout << "Исходынй вектор: " << std::endl;

print_vec_2d(nums);


sort_vec_2d(nums);


std::cout << "Полученный вектор: " << std::endl;

print_vec_2d(nums);

//system("pause");

}

ПОКАЗАТЬ ОТВЕТЫ
nbkmrf nbkmrf  09.10.2020 01:15

Исходя из того, что вы мало я написал программу по вашему заданию без всяких наворотов. Использовался динамический массив.

#include <iostream>

#include <clocale>

#include <cstdlib>

int sum_arr(int arr[], int size)

{

int sum = 0;

for (int i = 0; i < size; i++)

 sum += arr[i];

return sum;

}

void swap_arr(int arr1[], int arr2[], int size)

{

for (int i = 0; i < size; i++)

 std::swap(arr1[i], arr2[i]);

}

int main()

{

int N, M;

std::cin >> N >> M;

int** arr = new int* [N];

for (int i = 0; i < N; i++)

 arr[i] = new int[M];

for (int i = 0; i < N; i++)

{

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

  arr[i][j] = std::rand() % 100;

}

//вывод

for (int i = 0; i < N; i++)

{

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

 {

  std::cout << arr[i][j] << " ";

 }

 std::cout << std::endl;

}

std::cout << std::endl << std::endl;

for (int i = 0; i < N-1; i++)

{

 if (sum_arr(arr[i], M) > sum_arr(arr[i + 1], M))

  swap_arr(arr[i], arr[i + 1], M);

}

//вывод

for (int i = 0; i < N; i++)

{

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

 {

  std::cout << arr[i][j] << " ";

 }

 std::cout << std::endl;

}

for (int i = 0; i < N; i++)

 delete[] arr[i];

delete[] arr;

std::system("PAUSE >> void");  

return 0;

}


Язык c++. сформировать двухмерный динамический массив целых чисел. переставить строки массива в соот
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика