Разбиение функции main на много маленьких функций

Задача: Создать функцию нахождения произведения треугольной матрицы ниже главной диагонали в квадратной матрице и сортировки ее второго столбца.

#include <iostream> 
#include<stdlib.h>
using namespace std;

int main() {
const int n=5;
int matr[n][n];


for (int i = 0; i < n; ++i)     // заполнение двумерного массива рандомными числами от 0 до 99
    for (int x = 0; x < n; ++x)
        matr[i][x] = rand() %99;


int s = 0;    //Нахождение произведения
for (int i = 0; i < n; ++i)
    for(int j = 0; j < i; ++j) {
        s += matr[i][j];
    }
cout << "\nТам число номеров из трианглярной matrix ниже главной diagonal = " << s << endl;



for(int k = 0; k < n-1; ++k) //Сортировка матрицы
    for(int i = 0; i < n-1-k; ++i) 
    {
        if (matr[i+1][n – 4] < matr[i][n – 4])
        {
            int c = matr[i][n – 4];
            matr[i][n – 4] = matr[i + 1][n – 4];
            matr[i + 1][n – 4] = c;
        }
    }


for (int i = 0; i < n; ++i, cout << endl)     //выведение двумерного массива
    for (int x = 0; x < n; ++x)
        cout << " " << matr[i][x];


return 0;

}

У меня получилось реализовать это только в одной функции main,а нужно чтобы были маленькие подфункции

Пример по проще:

введите сюда описание изображения

Я пробовал разбить на маленькие подфункции методом из примера, но ничем хорошим это не закончилось. Буду рад если поможете решить эту проблему!


Ответы (1 шт):

Автор решения: AlexGlebe

Сначала создаёте структуру объекта, в которой будут хранится все его переменные.

struct Matrix {
  enum { n = 5 } ;
  int matr [ n ] [ n ] ;
} ;

далее все четыре участки кода разделяете, передавая аргументом ссылку на свою структуру.

// заполнение двумерного массива рандомными числами от 0 до 99
void Matrix_Init ( Matrix & m ) {
  for (int i = 0; i < m . n; ++i)     
    for (int x = 0; x < m . n; ++x)
        m . matr[i][x] = rand() % 100 ;
}

//Нахождение произведения
int Matrix_Mult ( Matrix & m ) {
  int r = 1;    
  for (int i = 0; i < m . n; ++i)
    for(int j = 0; j < i; ++j) {
        r *= m . matr[i][j];
    }
  return r ;
}

...

и в main их все вызываете :

Matrix m ;
Matrix_Init ( m ) ;
int r = Matrix_Mult ( m ) ;
cout << "\nПроизведение чисел из триангулярной "
  "матрицы ниже главной диагонали = " << r << endl;
...
→ Ссылка