#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;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGxvY2FsZT4KI2luY2x1ZGUgPGZzdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIHJlYWRGaWxlKGNoYXIqZm5hbWUsIGZsb2F0KiogJmEsIGludCAmbiwgaW50ICZtKSB7CglpZnN0cmVhbSBmaW47CglmaW4ub3BlbihmbmFtZSk7CglpZiAoIWZpbikgcmV0dXJuIDA7CglmaW4gPj4gbiA+PiBtOwoJYSA9IG5ldyBmbG9hdCpbbl07Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKCXsKCQlhW2ldID0gbmV3IGZsb2F0W25dOwoJCWZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKQoJCQlmaW4gPj4gYVtpXVtqXTsKCX0KCWZpbi5jbG9zZSgpOwoJcmV0dXJuIDE7Cn0KCmZsb2F0IGtvbFN0bGIoZmxvYXQqKiAmYSwgaW50ICZuLCBpbnQgJm0pewoJaW50IGtvbCA9IDAsIGksIGo7Cglmb3IgKGogPSAwOyBqIDwgbTsgaisrKQoJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCgkJCWlmIChhW2ldW2pdID09IDApCgkJCXsKCQkJCWtvbCsrOwoJCQl9CglyZXR1cm4ga29sOwp9CgpmbG9hdCBudW1TdHJrKGZsb2F0KiogJmEsIGludCAmbiwgaW50ICZtKQp7CglpbnQgbWF4ID0gMCwgaSA9IDAsIGogPSAwLCBrb2wgPSAwLCBudW07Cglmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQoJewoJCWZvciAoaiA9IDA7IGogPCBtOyBqKyspCgkJCWZvciAoaW50IGsgPSAwOyBrIDwgbTsgaysrKQoJCQkJaWYgKGFbaV1bal0gPT0gYVtpXVtrXSkKCQkJCQlrb2wrKzsKCQlpZiAoa29sID4gbWF4KQoJCXsKCQkJa29sID0gbWF4OwoJCQludW0gPSBpOwoJCX0KCX0KCXJldHVybiBudW07fQoKaW50IG1haW4oKSB7CglzZXRsb2NhbGUoTENfQUxMLCAiIik7CglpbnQgbiwgbTsKCWNoYXIgczsKCWZsb2F0ICoqYTsKCWNoYXIgZm5hbWVbMjBdOwoJY291dCA8PCAi0JjQvNGPINGE0LDQudC70LA/IjsgY2luID4+IGZuYW1lOwoJaWYgKCFyZWFkRmlsZShmbmFtZSwgYSwgbiwgbSkpIHsKCQljb3V0IDw8ICLQotCw0LrQvtCz0L4g0YTQsNC50LvQsCDQt9C00LXRgdGMINC90LXRgiEg0J/RgNC+0LLQtdGA0YzRgtC1INC40LzRjyDQuCDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LUg0LjRgdC60L7QvNC+0LPQviDRhNCw0LnQu9CwLiBcbiI7CgkJcmV0dXJuIDA7Cgl9Cgljb3V0IDw8ICLQpNCw0LnQuyDRg9GB0L/QtdGI0L3QviDQt9Cw0LPRgNGD0LbQtdC9ISBcbiDQndCw0LbQvNC40YLQtSAxLCDRh9GC0L7QsdGLINGD0LfQvdCw0YLRjCDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0L7Qu9Cx0YbQvtCyINGBINC90YPQu9C10LLRi9C8INGN0LvQtdC80LXQvdGC0L7QvCBcbiDQndCw0LbQvNC40YLQtSAyLCDRh9GC0L7QsdGLINC90LDQudGC0Lgg0L3QvtC80LXRgCDRgdGC0YDQvtC60Lgg0YEg0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C8INC60L7Qu9C40YfQtdGB0YLQstC+0Lwg0YDQsNCy0L3Ri9GFINGN0LvQtdC80LXQvdGC0L7QsiBcbiDQndCw0LbQvNC40YLQtSAwLCDRh9GC0L7QsdGLINCy0YvQudGC0LgiOwogICAgd2hpbGUgKHRydWUpewogICAgICAgIGNpbiA+PiBzOwogICAgICAgIHN3aXRjaCAocyl7CiAgICAgICAgICAgIGNhc2UgJzAnOnJldHVybiAwOwogICAgICAgICAgICBjYXNlICcxJzogY291dCA8PGtvbFN0bGIoYSwgbiwgbSkgPDwgZW5kbDsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJzInOiBjb3V0IDw8IG51bVN0cmsoYSwgbiwgbSkgPDwgZW5kbDticmVhazsKICAgICAgICAgICAgZGVmYXVsdDogY291dCA8PCAicmV0cnkiO2JyZWFrOwoKICAgICAgICB9CiAgICB9Ci8vICAgY291dCA8PCAiINCa0L7Qu9C70LjRh9C10YHRgtCy0L4g0YHRgtC+0LvQsdGG0L7QsiDRgSDQvdGD0LvQtdCy0YvQvCDRjdC70LXQvNC10L3RgtC+0LwgICIgPDwga29sU3RsYihhLCBuLCBtKSA8PCBlbmRsOwovLwljb3V0IDw8ICIg0J3QvtC80LXRgCDRgdGC0YDQvtC60Lgg0YEg0L3QsNC40LHQvtC70YzRiNC40LwgINC60L7Qu9C70LjRh9C10YHRgtCy0L7QvCDQvtC00LjQvdCw0LrQvtCy0YvRhSDRjdC70LXQvNC10L3RgtC+0LIgIiA8PCBudW1TdHJrKGEsIG4sIG0pIDw8IGVuZGw7Cgljb3V0IDw8IGVuZGw7Cn0K