Пример программы с++

Программа: Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.

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