Даны три цели матрицы A,B,C(все они "m x n ". Напечатать ту из них, где больше строк с нулевыми элементами
Динамические массивы не учил
Не могу определить как сделать вывод матрицы у которой больше нулевых элементов, чтобы вначале я вписывал значения всех матриц, а потом выводилось название матрицы где больше нулевых элементов
Получается в этой программе я должен из 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 << "имеет больше нулевых элементов";
}
Источник: Stack Overflow на русском