• Предмет: Информатика
  • Автор: Kukuwka0Ha0DepeBe
  • Вопрос задан 4 месяца назад

С++
Завдання 1. Написати програму, яка видаляє з двовимірного масиву, заповненого випадковими числами, рядки,
що містять нульові елементи.
Завдання 2. Написати програму, яка поелементно підсумовує два динамічні двовимірні масиви, заповнені випадковими числами, і зберігає результат у третьому масиві.
Розміри вихідних масивів задаються користувачем.

Ответы

Ответ дал: Stephan2
2

(задача1)
Одно з можливих варіантів реалізації проги :
#include <iostream>

#include <cstdlib>

using namespace std;

int main() {

   // Введення розмірів масиву

   int n, m;

   cout << "Введіть кількість рядків: ";

   cin >> n;

   cout << "Введіть кількість стовпців: ";

   cin >> m;

   // Створення та заповнення масиву випадковими числами

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

   for (int i = 0; i < n; i++) {

       arr[i] = new int[m];

       for (int j = 0; j < m; j++) {

           arr[i][j] = rand() % 10;

       }

   }

   // Виведення початкового масиву

   cout << "Початковий масив:" << endl;

   for (int i = 0; i < n; i++) {

       for (int j = 0; j < m; j++) {

           cout << arr[i][j] << " ";

       }

       cout << endl;

   }

   // Видалення рядків, що містять нульові елементи

   int new_n = 0;

   for (int i = 0; i < n; i++) {

       bool has_zero = false;

       for (int j = 0; j < m; j++) {

           if (arr[i][j] == 0) {

               has_zero = true;

               break;

           }

       }

       if (!has_zero) {

           new_n++;

       }

   }

   int** new_arr = new int*[new_n];

   int k = 0;

   for (int i = 0; i < n; i++) {

       bool has_zero = false;

       for (int j = 0; j < m; j++) {

           if (arr[i][j] == 0) {

               has_zero = true;

               break;

           }

       }

       if (!has_zero) {

           new_arr[k] = new int[m];

           for (int j = 0; j < m; j++) {

               new_arr[k][j] = arr[i][j];

           }

           k++;

       }

   }

   // Виведення зміненого масиву

   cout << "Змінений масив:" << endl;

   for (int i = 0; i < new_n; i++) {

       for (int j = 0; j < m; j++) {

           cout << new_arr[i][j] << " ";

       }

       cout << endl;

   }

   // Звільнення пам'яті

   for (int i = 0; i < n; i++) {

       delete[] arr[i];

   }

   delete[] arr;

   for (int i = 0; i < new_n; i++) {

       delete[] new_arr[i];

   }

   delete[] new_arr;

   return 0;

}




(задача2)Одно з можливих варіантів реалізації проги:
#include <iostream>

#include <cstdlib> // для генерації випадкових чисел

#include <ctime> // для встановлення seed для rand()

using namespace std;

int main()

{

   // отримання розмірів масивів від користувача

   int rows, cols;

   cout << "Введіть кількість рядків: ";

   cin >> rows;

   cout << "Введіть кількість стовпців: ";

   cin >> cols;

   // виділення пам'яті для трьох двовимірних масивів

   int** matrix1 = new int*[rows];

   int** matrix2 = new int*[rows];

   int** result = new int*[rows];

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

   {

       matrix1[i] = new int[cols];

       matrix2[i] = new int[cols];

       result[i] = new int[cols];

   }

   // заповнення двох початкових матриць випадковими числами

   srand(time(0)); // встановлення seed для rand()

   cout << "Матриця 1:" << endl;

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

   {

       for (int j = 0; j < cols; j++)

       {

           matrix1[i][j] = rand() % 10; // генерація випадкового числа в діапазоні [0, 9]

           cout << matrix1[i][j] << " ";

       }

       cout << endl;

   }

   cout << "Матриця 2:" << endl;

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

   {

       for (int j = 0; j < cols; j++)

       {

           matrix2[i][j] = rand() % 10; // генерація випадкового числа в діапазоні [0, 9]

           cout << matrix2[i][j] << " ";

       }

       cout << endl;

   }

   // підсумовування елементів двох матриць і збереження результату у третій матриці

   cout << "Результат:" << endl;

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

   {

       for (int j = 0; j < cols; j++)

       {

           result[i][j] = matrix1[i][j] + matrix2[i][j];

           cout << result[i][j] << " ";

       }

       cout << endl;

   }

   // звільнення виділеної пам'яті

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

   {

       delete[] matrix1[i];

       delete[] matrix2[i];

       delete[] result[i];

   }

   delete[] matrix1;

   delete[] matrix2;

   delete[] result;

   return 0;

}


Stephan2: можно краще?
Вас заинтересует