#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 положительных элементов
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.