Лидеры рейтинга

ID: 401284

Михаил Александров

Советник

377

Россия, Санкт-Петербург


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

358

Россия, пос. Теплоозёрск, ЕАО


ID: 401888

puporev

Профессор

215

Россия, Пермский край


ID: 405338

vovaromanov.jr

1-й класс

126


ID: 400669

epimkin

Профессионал

111


ID: 242862

Hunter7007

Мастер-Эксперт

29

Россия, Омск


ID: 137394

Megaloman

Мастер-Эксперт

25

Беларусь, Гомель


8.10.2

13.10.2021

JS: 2.10.2
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-10-20 21:46:11-standard


Создание программ на языках C и C++.

Администратор раздела: CradleA (Мастер-Эксперт)

Консультация онлайн # 160336

Раздел: С / С++
Автор вопроса: Саркисян Гварг Владимирович
Дата: 12.02.2009, 21:31 Консультация закрыта
Поступило ответов: 1

Дан двумерный массив размерностью NxM (N и M вводится с клавиатуры). Найти количество всех положительных элементов данного массива. Произвести вывод данного массива в виде матрицы.

Ответ # 243518 от Micren
Здравствуйте, Саркисян Гварг Владимирович!
Программа:
Код
#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 положительных элементов

Micren

Посетитель
12.02.2009, 23:27
Мини-форум консультации # 160336
неизвестный

1

= общий =    12.02.2009, 21:32

программа на C++

неизвестный

2

= общий =    12.02.2009, 23:27

а можно сделать программу на простеших библиотеках iostream.h, math.h, conio.h

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 164

Gluck

8-й класс

Рейтинг: 60

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 47

CradleA

Мастер-Эксперт

Рейтинг: 1

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0