Программа: Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | #include <iostream> #include <ctime> #include <cstdlib> #include <iomanip> using namespace std; // Максимальное количество элементов в массиве const int MaxMatrixSize = 100; /* Описание: Вывести меню пользователю и вернуть номер варианта Параметры: нет Результат: целое число - номер элемента меню */ int prompt_menu_item(); /* Описание: Заполнить двумерный массив целыми числами Параметры: arr - матрица, size - реальный размер Результат: нет */ void get_random_array(int arr[MaxMatrixSize][MaxMatrixSize], int &size); /* Описание: Выводит на экран матрицу Параметры: arr - матрица, size - реальный размер Результат: нет */ void show_array(int arr[MaxMatrixSize][MaxMatrixSize], int size); /* Описание: Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна. Параметры: arr - матрица, size - реальный размер Результат: целое число - номер строки с максимальной суммой */ int get_max_row_sum(int arr[MaxMatrixSize][MaxMatrixSize], int &size); void main() { setlocale(LC_ALL, "Russian"); // Исходные данные int MatrixSize = 0; int ourMatrix[MaxMatrixSize][MaxMatrixSize] = {0}; while(true) switch ( prompt_menu_item() ) { case 1: cout << "Генерирование..." << endl; get_random_array(ourMatrix, MatrixSize); system("pause"); system("cls"); break; case 2: cout << "Считываем из файла элементы..." << endl; //get_array_from_file(ourMatrix, MatrixSize); system("pause"); system("cls"); break; case 3: cout << "Вывести матрицу..." << endl; show_array(ourMatrix, MatrixSize); system("pause"); system("cls"); break; case 4: cout << "Сортируем..." << endl; cout << "Номер строки с максимальной суммой:"<<get_max_row_sum(ourMatrix, MatrixSize)<<endl; system("pause"); system("cls"); break; case 5: cout << "Находим среднее количество элементов..." << endl; system("pause"); system("cls"); break; case 6: cout << "Дополняем таблицу..." << endl; system("pause"); system("cls"); break; case 7: cout << "Выход из программы..." << endl; system("cls"); exit(EXIT_SUCCESS); break; default: cerr << "Вы выбрали неверный вариант" << endl; system("pause"); system("cls"); exit(EXIT_FAILURE); } system("pause"); } int prompt_menu_item() { // Выбранный вариант меню int variant; cout << "Выберите вариант\n" << endl; cout << "1. Генерирование матрицы случайными числами\n"; cout << "2. Считать матрицу из файла\n"; cout << "3. Вывести на экран матрицу\n"; cout << "4. Вывести на экран номер максимальной суммы эл-ов\n"; cout << "7. выйти\n" << endl; cout << ">>> "; cin >> variant; return variant; } void get_random_array(int arr[MaxMatrixSize][MaxMatrixSize], int &size) { cout<<"Введите размер матрицы: "; cin>>size; srand(time_t(NULL)); for (int rowNum = 0; rowNum < size; rowNum++) for (int columnNum = 0; columnNum < size; columnNum++) arr[rowNum][columnNum] = 10 + rand() % 91; cout<<"Матрица сгенерированная!"; } void show_array(int arr[MaxMatrixSize][MaxMatrixSize], int size) { for (int rowNum = 0; rowNum < size; rowNum++) { cout << " | "; for (int columnNum = 0; columnNum < size; columnNum++) cout << setw(4) << arr[rowNum][columnNum] << " "; cout << "|" << endl; } } int get_max_row_sum(int arr[MaxMatrixSize][MaxMatrixSize], int &size) { int rowSum[MaxMatrixSize] = {}; // для записи сумм в строках int numMaxRow = 0; // номер строки с максимальной суммой // подсчет суммы отдельно в каждой строке for (int rowNum = 0; rowNum < size; rowNum++) { for (int columnNum = 0; columnNum < size; columnNum++) { rowSum[rowNum] += arr[rowNum][columnNum]; } } cout << "\nСумма по строкам!\n"; for (int i = 0; i < size; i++) { cout << i + 1 << "-я строка: " << rowSum[i] << endl; } for (int i = 1; i < size; i++) { if (rowSum[i] > rowSum[numMaxRow]) { numMaxRow = i; } } return numMaxRow + 1; } |