С++
Завдання 1. Написати програму, яка видаляє з двовимірного масиву, заповненого випадковими числами, рядки,
що містять нульові елементи.
Завдання 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;
}