Есть ответ 👍

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

156
362
Посмотреть ответы 3

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

Nicalat
4,6(24 оценок)

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

#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;

}

Gklunnyy123
4,5(57 оценок)

#include < iostream>

#include < vector>

#include < random>

int rand_num(int min, int max)

{

std: : random_device rd;    

std: : mt19937 rng(;    

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");

}


Эмм ну вот смотри, вводим числа, readln(a,b,c) потом, меняем местами write(c,b,a) вот полный код: var a,b,c: integer; begin readln(a,b,c); writeln(c,b,a); end.

Популярно: Информатика