Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
19.08.2022
Размер:
2.68 Кб
Скачать
#include <iostream>
#include <ctime>
#include <vector>
#include <cmath>

using namespace std;

int getRandomNumber(int min, int max);
void fillMatrix(int N, vector<vector<int> > &matrix);
void printMatrix(int N,vector<vector<int> > &matrix);
int average(int N, vector <vector<int> > &matrix);
void changeMatrix(int N, vector <vector<int> > &matrix, int S);


int main(){
    setlocale(LC_ALL, "rus");

    cout << "Вариант №3" << endl;
    cout << "Лабораторная работа №10" << endl;

    srand(time(NULL));

    int flag = 0;
    while(flag != 1){
        int N = getRandomNumber(7, 10);
        cout << "Сгенерировано cлучайное число - для создания матрицы = " << N << endl;
        vector <vector<int> > matrix(N, vector<int>(N));

        fillMatrix(N, matrix);
        printMatrix(N, matrix);
        float S = average(N, matrix);
        cout << "\nСреднее арифметическое элементов матрицы, больших 10 = " << S << ";\n" << endl;
        changeMatrix(N, matrix, S);
        cout << "Заменить нулями все элементы, превосходящие S.\n\n";
        printMatrix(N, matrix);
        
        cout << "Желаете выйти из бесконечного цикла? Введите 1\n";
        cin >> flag;
    }

    return 0;
}

int getRandomNumber(int min, int max){
    return static_cast<int>(min + rand() % (max - min + 1));
}

void fillMatrix(int N, vector <vector<int> > &matrix){
    int col = N;
    int row = 0;

    for (int i = 0; i < N; i++){
        col--;
        for (int j = 0; j < N; j++){
            if (j == 0)
                row = col;
            else if (j > 0 && row != N)
                row++;
            else{
                row = N;
            }
            matrix[i][j] = pow((N - row), 2);
        }
    }
    cout << endl;
}

void printMatrix(int N, vector <vector<int> > &matrix){
    cout << "Вывод матрицы:\n";
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            cout << matrix[i][j] << "\t";
        }
        cout << endl;
    }
}

int average(int N, vector <vector<int> > &matrix){
    float mid = 0;
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            if (matrix[i][j] > 10){
                mid += matrix[i][j];
            }
        }
    }
    return mid / (N * N);
}

void changeMatrix(int N, vector <vector<int> > &matrix, int S){
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            if (matrix[i][j] > S){
                matrix[i][j] = 0;
            }
        }
    }
}
Соседние файлы в папке 2 курс - Основы алгоритмизации _ вариант 3