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

Ответы 7

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

      easton925
    • 5 лет назад
    • 0
  • Через указатели еще можно, но это сложнее. Для меня по крайней мере
  • Вот через указатели и надо
  • Здравствуйте, не поможете мне пожалуйста с этим? https://znanija.com/task/29761848
  • Здравствуйте, не поможете мне пожалуйста с этим? https://znanija.com/task/29761848
    • Автор:

      aggieav2k
    • 5 лет назад
    • 0
  • #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");

    }

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

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

    }

    answer img
    • Автор:

      lady
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years