Даны три цели матрицы A,B,C(все они "m x n ". Напечатать ту из них, где больше строк с нулевыми элементами

Рейтинг: 1Ответов: 1Опубликовано: 15.02.2023

Динамические массивы не учил

Не могу определить как сделать вывод матрицы у которой больше нулевых элементов, чтобы вначале я вписывал значения всех матриц, а потом выводилось название матрицы где больше нулевых элементов

Получается в этой программе я должен из 3-х массивов получить найти тот массив, который будет больше иметь нулевых элементов(0) и при этом он делает текстовый файл с названием котороя я напишу и все что напишу в командной строке.

        #include <iostream>
    #include <fstream>
    #include <cmath>
    #include <conio.h>
    using namespace std;

    bool is_null;
    int m, n, i, j, k, l,  countZeroRows, max = 0, arrMax;
    int arr[3][3][3];
    char s, filename[40];
    bool flag;

    void InputLength(bool p) {
    while (true) {
        cout << "Enter the size of rows(m) and columns(n) \n";
        cin >> m >> n >> l;
        if (p) {
            ofstream output(filename, ios::app);
            output << "====================================\n";
            output << "Input rows(m) and columns(n)\n";
            output << "m = " << m << "\n";
            output << "n = " << n << "\n";
            for (int j = 0; j < m; j++)
            {
                is_null = true;
                for (int k = 0; k < n; k++)
                {
                    cout << arr[j][k] << "\n";

                    if (arr[j][k] != 0)
                        is_null = false;
                }
                if (is_null == true)
                   countZeroRows += 1;
            }
        }
        if (n > 0 && n <= 100 && m <= 100 && m > 0) break;
        else {
            cout << "Error! Try another m,n.\n";
                if (p) {
                    ofstream output(filename, ios::app);
                    output << "User input incorrect data, restart program\n";
                }
        }
    }
}

    void InPut(float Array[], char name, int length, bool p, bool is_null, int countZeroRows, int max, int arrMax ){
    for (int i = 0; i < length; i++){
        cout << "Input " << name << "[" << i << "]\n";
        cin >> Array[i];
    }
    if (p) {
        ofstream output(filename, ios::app);
        output << "====================================\n";
        output << "Input array " << name << endl;
        output << "Array " << name << endl;
        for (int i = 0; i < length; i++) output << Array[i] << endl;
    }
}

    void OutPut(float Array[], char name, int length, bool p) {
    cout << "Array " << name << "\n";
    for (int i = 0; i < length; i++) {
        cout << name << "[" << i << "] = " << Array[i] << "\n";
    }
    if (p) {
        ofstream output(filename, ios::app);
        output << "====================================\n";
        output << "Output array " << name << endl;
    }
}

    void CountZero(float Array[], char name, int length, bool p){
    int countZeroRows, max=0, arrMax;
    if (countZeroRows >= max) {

        max = countZeroRows;
        arrMax = i + 1;
    }
}

    int main() {
        cout << "Do you need program protocol? (Y/N)\n";
        cin >> s;
        if (s == 'y' || s == 'Y') flag = 1;
        else flag = 0;
        if (flag) {
            cout << "Enter a file name (no more than 40 symbols)\n";
            cin >> filename;
            ofstream output(filename, ios::out);
            output << "Program start\n";
        }
    float A[110], B[110], C[110];
        InputLength(flag);
        InPut(A, 'A', m, flag);
        InPut(B, 'B', l, flag);
        InPut(C, 'C', n, flag);
        OutPut(A, 'A', m, flag);
        OutPut(B, 'B', l, flag);
        OutPut(C, 'C', n, flag);
        _getch();
}

Это без использования функции, но оказалось что нужно с функциями

#include<iostream>
#include<ctime>

using namespace std;
int main() {
    setlocale(LC_ALL, "ru");

    bool is_null;

    int m, n, i, j, k, countZeroRows, max=0, arrMax;
    int arr[3][3][3];

    for (i = 0; i < 3; i++) {
        countZeroRows = 0;

        cout << "Заполняем массив ";
        switch (i+1) {
        case 1: cout << "'A' "; break;
        case 2: cout << "'B' "; break;
        case 3: cout << "'C' "; break;
        }

        cout << "\n";

        for (j = 0; j < 3; j++) {

            is_null = true;
            
            for (k = 0; k < 3; k++) {

                cout << "Ряд " << j+1 << " строка " << k+1 << " ";
                cin >> arr[i][j][k];

                if (arr[i][j][k] != 0)
                    is_null = false;
            }
            if (is_null == true)
                countZeroRows += 1;
        }

        if (countZeroRows >= max) {

            max = countZeroRows;
            arrMax = i+1;
        }

    }
    
    switch (arrMax) {
    case 1: cout << "'A' "; break;
    case 2: cout << "'B' "; break;
    case 3: cout << "'C' "; break;
    }

    cout << "имеет больше нулевых элементов";

}

Ответы

Ответов пока нет.