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

0 голосов
81 просмотров

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


Информатика (46 баллов) | 81 просмотров
Дано ответов: 2
0 голосов

#include

#include

#include


int rand_num(int min, int max)

{

std::random_device rd;    

std::mt19937 rng(rd());    

std::uniform_int_distribution uni(min, max);


auto random_integer = uni(rng);


return random_integer;

}


int sum_vec(std::vector v)

{

int sum = 0;

for (auto &num : v)

{

 sum += num;

}

return sum;

}


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

{

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

{

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

 {

 std::cout << v[i][j] << " ";</p>

 }

 std::cout << std::endl;</p>

}

}


void sort_vec_2d(std::vector>& 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>& 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> nums;

rand_vec_2d(nums, 1, 10);


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

print_vec_2d(nums);


sort_vec_2d(nums);


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

print_vec_2d(nums);

//system("pause");

}

(1.3k баллов)
0

Спасибо огромное! Но вопрос: мы векторы не проходили пока на первом курсе. Как бы сделать без них?

0

Через указатели еще можно, но это сложнее. Для меня по крайней мере

0

Вот через указатели и надо

0 голосов

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

#include

#include

#include

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

 }

 std::cout

}

std::cout

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

 }

 std::cout

}

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

 delete[] arr[i];

delete[] arr;

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

return 0;

}


image
(4.0k баллов)