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

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

Задать свой вопрос
2 ответа

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

include lt;iostreamgt;

include lt;clocalegt;

include lt;cstdlibgt;

int sum_arr(int arr[], int size)

int sum = 0;

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

 sum += arr[i];

return sum;

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

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

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

int main()

int N, M;

std::cin gt;gt; N gt;gt; M;

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

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

 arr[i] = new int[M];

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

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

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

//вывод

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

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

 

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

 

 std::cout lt;lt; std::endl;

std::cout lt;lt; std::endl lt;lt; std::endl;

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

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

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

//вывод

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

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

 

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

 

 std::cout lt;lt; std::endl;

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

 delete[] arr[i];

delete[] arr;

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

return 0;

include lt;iostreamgt;

include lt;vectorgt;

include lt;randomgt;


int rand_num(int min, int max)

std::random_device rd;    

std::mt19937 rng(rd());    

std::uniform_int_distributionlt;intgt; uni(min, max);


auto random_integer = uni(rng);


return random_integer;


int sum_vec(std::vectorlt;intgt; v)

int sum = 0;

for (auto amp;num : v)

 sum += num;

return sum;


void print_vec_2d(const std::vectorlt;std::vectorlt;intgt;gt;amp; v)

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

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

 

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

 

 std::cout lt;lt; std::endl;


void sort_vec_2d(std::vectorlt;std::vectorlt;intgt;gt;amp; v)

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

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

 

  if (sum_vec(v[i]) gt; sum_vec(v[j]))

 

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

 

 


void rand_vec_2d(std::vectorlt;std::vectorlt;intgt;gt;amp; v, int min, int max)


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


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

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

 

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

 


int main()

setlocale(LC_ALL, "Russian");

std::vectorlt;std::vectorlt;intgt;gt; nums;

rand_vec_2d(nums, 1, 10);


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

print_vec_2d(nums);


sort_vec_2d(nums);


std::cout lt;lt; "Приобретенный вектор: " lt;lt; std::endl;

print_vec_2d(nums);

//system("pause");

Сергей Ландратов
Спасибо огромное! Но вопрос: мы векторы не проходили пока на первом курсе. Как бы сделать без них?
Тылкина Юлия
Через указатели еще можно, но это труднее. Для меня по последней мере
Руслан Кетрарь
Вот через указатели и надо
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт