Работа с матрицами

Автор работы: Пользователь скрыл имя, 24 Октября 2013 в 16:06, задача

Описание работы

Дана целочисленная прямоугольная матрица. определить:
1)кол-во строк , не содержащих нулевые элементы
2)максимальное из чисел, повторяющееся несколько раз

Файлы: 1 файл

Матрицы.doc

— 24.50 Кб (Скачать файл)

Дана целочисленная  прямоугольная матрица. определить:

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::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;

}


Информация о работе Работа с матрицами