Консультация № 169583
18.06.2009, 21:50
0.00 руб.
0 1 1
Дана целочисленная прямоугольная матрица найти количество отрицательных элементов в тех строках в которых есть хотя бы один нулевой элемент!!! ОФОРМИТЬ ПОИСК СТРОК И ПОДСЧЕТ КОЛИЧЕСТВА ОТРИЦАТЕЛЬНЫХ ЭЛЕМЕНТОВ В ВИДЕ ВЫЗЫВАЕМОЙ ФУНКЦИИ!!!

Обсуждение

Неизвестный
18.06.2009, 21:56
общий
это ответ
Здравствуйте, Durher.
Программа. С++.
Код:

#include <locale>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

// Шаблонная функция которая подсчитывает количество нулевых и орицательных элементов в строке
// matrix - матрица
// row - строка в которой будем считать
// negatives - количество отрицательных
// Результат вызова функции - количество нулевых
template<class T,size_t Dim1,size_t Dim2>
size_t countZeroesAndNegatives(T (&matrix)[Dim1][Dim2],size_t row,size_t& negatives)
{
// Обнулим счетчики
size_t zeroes=0;
negatives=0;
// Проверка корректности параметра row
if(row<Dim1)
{
// Идем по строке
for(size_t j=0;j<Dim2;++j)
{
// Считаем
zeroes+=matrix[row][j]==0;
negatives+=matrix[row][j]<0;
}
}
return zeroes;
}

int main()
{
// Размерности матрицы
const size_t ROWS=5,COLS=7;
int matrix[ROWS][COLS];
setlocale(LC_ALL,"russian");
srand(static_cast<unsigned int>(time(0)));
// Заполняем матрицу случайными числами и печатаем ее
cout<<"Матрица:"<<endl;
for(size_t i=0;i<ROWS;++i)
{
for(size_t j=0;j<COLS;++j)
{
matrix[i][j]=static_cast<int>(static_cast<double>(rand())/RAND_MAX*21-10);
cout<<setw(4)<<matrix[i][j]<<' ';
}
cout<<endl;
}
// Идем по строкам и проверяем их согласно условию
for(size_t i=0;i<ROWS;++i)
{
size_t negatives;
// Вывод будет только если функция вернет не ноль. Т.е. если будут нулевые элементы.
countZeroesAndNegatives(matrix,i,negatives) && cout<<"Строка "<<i<<" содержит "<<negatives<<" отрицательных элементов"<<endl;
}
system("PAUSE");
return 0;
}


Пример работы:
Код:

Матрица:
-3 -6 7 2 -1 9 5
-3 6 -2 0 0 10 3
-7 10 6 -3 -1 -5 0
5 10 2 -1 -1 5 -5
-4 -7 -7 -9 -5 -7 -2
Строка 1 содержит 2 отрицательных элементов
Строка 2 содержит 4 отрицательных элементов
Форма ответа