
#include <iostream>
#include <locale>
#include <fstream>
using namespace std;

bool readFile(char*fname, float** &a, int &n, int &m) {
	ifstream fin;
	fin.open(fname);
	if (!fin) return 0;
	fin >> n >> m;
	a = new float*[n];
	for (int i = 0; i < n; i++)
	{
		a[i] = new float[n];
		for (int j = 0; j < n; j++)
			fin >> a[i][j];
	}
	fin.close();
	return 1;
}

float kolStlb(float** &a, int &n, int &m){
	int kol = 0, i, j;
	for (j = 0; j < m; j++)
		for (i = 0; i < n; i++)
			if (a[i][j] == 0)
			{
				kol++;
			}
	return kol;
}

float numStrk(float** &a, int &n, int &m)
{
	int max = 0, i = 0, j = 0, kol = 0, num;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
			for (int k = 0; k < m; k++)
				if (a[i][j] == a[i][k])
					kol++;
		if (kol > max)
		{
			kol = max;
			num = i;
		}
	}
	return num;}

int main() {
	setlocale(LC_ALL, "");
	int n, m;
	char s;
	float **a;
	char fname[20];
	cout << "Имя файла?"; cin >> fname;
	if (!readFile(fname, a, n, m)) {
		cout << "Такого файла здесь нет! Проверьте имя и расположение искомого файла. \n";
		return 0;
	}
	cout << "Файл успешно загружен! \n Нажмите 1, чтобы узнать количество столбцов с нулевым элементом \n Нажмите 2, чтобы найти номер строки с максимальным количеством равных элементов \n Нажмите 0, чтобы выйти";
    while (true){
        cin >> s;
        switch (s){
            case '0':return 0;
            case '1': cout <<kolStlb(a, n, m) << endl; break;
            case '2': cout << numStrk(a, n, m) << endl;break;
            default: cout << "retry";break;

        }
    }
//   cout << " Колличество столбцов с нулевым элементом  " << kolStlb(a, n, m) << endl;
//	cout << " Номер строки с наибольшим  колличеством одинаковых элементов " << numStrk(a, n, m) << endl;
	cout << endl;
}
