Язык c++. сформировать двухмерный динамический массив целых чисел. переставить строки массива в соответствии с увеличением суммы элементов строк.
Ответы на вопрос:
исходя из того, что вы мало прошли, я написал программу по вашему без всяких наворотов. использовался динамический массив.
#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;
}
#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");
}
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Assssssa23.03.2021 22:20
-
katyasasha141515.08.2021 11:06
-
DeadAsted03.01.2022 00:36
-
olgafedotova201712.05.2021 03:00
-
ivansobolev000Ivan12.02.2023 03:10
-
MasterHaris03.01.2021 07:48
-
Asimaaa10.02.2020 08:32
-
vanab32209.09.2022 10:47
-
PolliKirill15.12.2020 15:49
-
cernyshova18.05.2021 04:43
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.