Консультация № 160336
12.02.2009, 21:31
0.00 руб.
0 3 1
Дан двумерный массив размерностью NxM (N и M вводится с клавиатуры). Найти количество всех положительных элементов данного массива. Произвести вывод данного массива в виде матрицы.

Обсуждение

Неизвестный
12.02.2009, 21:32
общий
программа на C++
Неизвестный
12.02.2009, 23:27
общий
это ответ
Здравствуйте, Саркисян Гварг Владимирович!
Программа:
Код:

#include <locale>
#include <limits>
#include <iostream>
#include <iomanip>
#include <wchar.h>

using namespace std;

unsigned int inputDimension(const wchar_t* const);

int main()
{
locale::global(locale("rus_rus.866"));
// Вводим количество строк матрицы
unsigned int N=inputDimension(L"Количество строк матрицы:");
// Вводим количество столбцов матрицы
unsigned int M=inputDimension(L"Количество столбцов матрицы:");
// Матрица. Память распределяется динамически.
int *matrix=0;
try
{
// Выделяем память
matrix=new int[N*M];
// Вводим матрицу
for(unsigned int i=0;i<N;i++)
{
for(unsigned int j=0;j<M;j++)
{
// Вводим элемент
while(1)
{
// Хотя в C++ индексы начинаются с нуля, для удобства пользователя нумеруем с единицы
wcout<<L'['<<i+1<<L"]["<<j+1<<L"]=";
wcin>>matrix[i*M+j];
if(wcin.fail())
{
wcout<<L"Ошибка ввода!"<<endl;
wcin.clear();
wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
}
else
{
wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
break;
}
}
}
}
// Выводим матрицу для контроля и сразу считаем
unsigned int counter=0;
wcout<<L"Исходная матрица:"<<endl;
for(unsigned int i=0;i<N;i++)
{
for(unsigned int j=0;j<M;j++)
{
wcout<<setw(9)<<matrix[i*M+j]<<L' ';
counter+=matrix[i*M+j]>0;
}
wcout<<endl;
}
wcout<<L"Матрица содержит "<<counter<<L" положительных элементов"<<endl;
}
catch(bad_alloc)
{
// Если не удалось выделить память выводим это
wcout<<L"Не могу выделить память для размещения матрицы"<<endl;
}
// Освобождаем память
if(matrix)delete []matrix;
system("PAUSE");
return 0;
}

unsigned int inputDimension(const wchar_t* const msg)
{
unsigned int dim=0;
while(!dim)
{
wcout<<msg;
wcin>>dim;
if(wcin.fail())
{
wcout<<L"Ошибка ввода!"<<endl;
wcin.clear();
}
wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
}
return dim;
}


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

Количество строк матрицы:3
Количество столбцов матрицы:4
[1][1]=4
[1][2]=-5
[1][3]=-7
[1][4]=4
[2][1]=5
[2][2]=6
[2][3]=7
[2][4]=-34
[3][1]=23
[3][2]=45
[3][3]=7
[3][4]=89
Исходная матрица:
4 -5 -7 4
5 6 7 -34
23 45 7 89
Матрица содержит 9 положительных элементов
Неизвестный
12.02.2009, 23:27
общий
а можно сделать программу на простеших библиотеках iostream.h, math.h, conio.h
Форма ответа