Дана матрица. Найти сумму элементов в тех столбцах, которые не содержат отрицательные элементы. Количество столбцов и строк матрицы должен вводить пользователь. По введенным данным, динамически, должна выделиться память под матрицу. Матрицу заполнять случайными значениями, как отрицательными так и положительными. Вот пример работы программы:
#include <iostream> #include <iomanip> #include <ctime> #include <cstdlib> using namespace std; int main() { srand(time(0)); // генерация случайных чисел cout << "Enter the number of rows: "; // введите количество строк int rows_number = 0; cin >> rows_number; cout << "Enter the number of columns: "; // введите количество столбцов int columns_number = 0; cin >> columns_number; // динамическое создание двумерного массива вещественных чисел на десять элементов int **ptrarray_a = new int* [rows_number]; // строки в массиве for (int count = 0; count < rows_number; count++) ptrarray_a[count] = new int [columns_number]; // столбцы // заполнение массива for (int count_row = 0; count_row < rows_number; count_row++) for (int count_column = 0; count_column < columns_number; count_column++) ptrarray_a[count_row][count_column] = rand() % 10 - 2; //заполнение массива случайными числами for (int count_row = 0; count_row < rows_number; count_row++) { for (int count_column = 0; count_column < columns_number; count_column++) cout << setw(2) << ptrarray_a[count_row][count_column] << " "; //вывод массива cout << endl; } int *ptrarray = new int [columns_number]; // создание динамического массива for (int count = 0; count < columns_number; count++) ptrarray[count] = 0; for (int count_column = 0; count_column < columns_number; count_column++) { for (int count_row = 0; count_row < rows_number; count_row++) if (ptrarray_a[count_row][count_column] >= 0) ptrarray[count_column] += ptrarray_a[count_row][count_column]; else { ptrarray[count_column] = 0; break; } } cout << endl; for (int count = 0; count < columns_number; count++) if (ptrarray[count] != 0) cout << setw(2) << ptrarray[count] << " "; // печать первоначального массива else cout << setw(3) << " "; cout << endl; // удаление двумерного динамического массива for (int count = 0; count < 2; count++) delete []ptrarray_a[count]; delete [] ptrarray; // высвобождение памяти return 0; }
Смотрим на результат работы программы:
CppStudio.com
Enter the number of rows: 5 Enter the number of columns: 4 5 7 3 -1 2 3 3 6 5 4 0 2 3 5 2 -2 1 0 4 2 16 19 12
Комментарии
YourSpace_tym
Vladimir Belikov
Smile Time
Smile Time
Немного недоглядел, при выводе результата, цифры съезжают, из-за не вывода отрицательных сумм.(может показать что работает неправильно)