Автор работы: Пользователь скрыл имя, 24 Октября 2013 в 16:06, задача
Дана целочисленная прямоугольная матрица. определить:
1)кол-во строк , не содержащих нулевые элементы
2)максимальное из чисел, повторяющееся несколько раз
Дана целочисленная прямоугольная матрица. определить:
1)кол-во строк , не содержащих нулевые элементы
2)максимальное из чисел,
#include <iostream>
#include <map>
#include <algorithm>
#include <iterator>
#include <functional>
#include <cstdlib>
int main(){
const int rows(4);
const int columns(5);
int matrix[rows][columns] = {
{ 1, 4, 0, 3, 2 },
{ 5, 7, 7, 4, 9 },
{ 0, 1, 2, 6, 7 },
{ 3, 8, 5, 2, 6 }
};
int cntWOZero = 0;
for ( int i = 0; i < rows; ++i )
if ( ! std::count(matrix[i], matrix[i] + columns, 0) )
++cntWOZero;
std::map<int, int, std::greater<int> > map;
for ( int i = 0; i < rows; ++i )
for ( int j = 0; j < columns; ++j )
map[matrix[i][j]]++;
std::cout << "Matrix:" << std::endl;
for ( int i = 0; i < rows; ++i ){
std::copy(matrix[i],
matrix[i] + columns, std::ostream_iterator<int>(
std::cout << std::endl;
}
std::cout << "Rows without zero elements: " << cntWOZero << std::endl;
bool found = false;
for ( std::map<int, int, std::greater<int> >::const_iterator i = map.begin(); i != map.end(); ++i ){
if ( i->second > 1 ){
found = true;
std::cout << "Max not single value is " << i->first << ", meet " << i->second << " times." << std::endl;
break;
}
}
if ( ! found )
std::cout << "Every value in matrix meet just once. Greatest is " << map.begin()->first << std::endl;
std::cout << std::endl;
system("pause");
return 0;
}