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

ID: 259041

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

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

379

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


ID: 401284

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

Советник

378

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


ID: 401888

puporev

Профессор

216

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


ID: 405338

vovaromanov.jr

1-й класс

130


ID: 400669

epimkin

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

112


ID: 242862

Hunter7007

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

30

Россия, Омск


ID: 137394

Megaloman

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

26

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


8.10.2

13.10.2021

JS: 2.10.2
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-10-19 18:16:01-standard


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

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

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

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

Уважаемые, Товарищи.. прошу помощи с программой на VC++2008

Объявляем число строк Целочисленная прямоугольная матрица, найти номера первых столбцов, не содержащих ни одного отрицательного элемента, со статическим раcпределением, код разбить на функции.

Заранее благодарен

Ответ # 243498 от Micren
Здравствуйте, Степанов Андрей Сергеевич!
Программа:
Код
#include <locale>
#include <limits>
#include <iostream>
#include <iomanip>
#include <wchar.h>

// Максимальные значения для размерности матрицы
const int MaxDimension=100;
// Матрица. Память распределяется статически.
double matrix[MaxDimension][MaxDimension];

using namespace std;

unsigned int inputDimension(const wchar_t* const);
bool isCont();
void printMatrix(unsigned int,unsigned int);
void inputMatrix(unsigned int,unsigned int);

int main()
{
	locale::global(locale("rus_rus.866"));
	do 
	{
		// Вводим количество строк матрицы
		unsigned int N=inputDimension(L"Количество строк матрицы");
		// Вводим количество столбцов матрицы
		unsigned int M=inputDimension(L"Количество столбцов матрицы");
		// Вводим матрицу
		inputMatrix(N,M);
		// Выводим матрицу для контроля
		printMatrix(N,M);
		// Ищем столбцы без отрицательных
		wcout<<L"Столбцы не содержащие ни одного отрицательного элемента:";
		// Счетчик столбцов
		unsigned int cnt=0;
		for(unsigned int j=0;j<M;j++)
		{
			for(unsigned int i=0;i<N;i++)
			{
				// Проверка 
				if(matrix[i][j]<0)goto is_not_it;
			}
			cnt++;
			// Выводим номер столбца. Нумеруем с единицы
			wcout<<j+1<<L',';
is_not_it:;
		}
		if(cnt)wcout<<L"\b ";
		else wcout<<L"Отсутствуют";
		wcout<<endl;
		wcout<<L"Найдено "<<cnt
			<<(cnt<5&&cnt>1?L" столбца":(cnt==1?L" столбец":L" столбцов"))
			<<L" не содержащих отрицательных."<<endl;
	}while(isCont());
	return 0;
}

unsigned int inputDimension(const wchar_t* const msg)
{
	unsigned int dim=0;
	while(!dim)
	{
		wcout<<msg<<L'('<<1<<L".."<<MaxDimension<<L"):";
		wcin>>dim;
		if(wcin.fail())
		{
			wcout<<L"Ошибка ввода!"<<endl;
			wcin.clear();
		}
		wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
		if(dim>MaxDimension)
		{
			wcout<<L"Размер не может быть больше "<<MaxDimension<<endl;
			dim=0;
		}
	}
	return dim;
}

bool isCont()
{
	// Вопрос о продолжении
	while(1)
	{
		wcout<<L"Желаете еще раз(Y/N)?:";
		wchar_t reply=_getwche();
		wcout<<endl;
		switch(reply)
		{
		case L'Y':case L'y':case L'Д':case L'д':
			return true;
		case L'N':case L'n':case L'Н':case L'н':
			return false;
		default:
			wcout<<L"Будьте внимательней!"<<endl;
			continue;
		}
		break;
	}
}

void printMatrix(unsigned int N,unsigned int M)
{
	wcout<<L"Исходная матрица:"<<endl;
	for(unsigned int i=0;i<N;i++)
	{
		for(unsigned int j=0;j<M;j++)
			wcout<<setw(7)<<matrix[i][j]<<L' ';
		wcout<<endl;
	}
}

void inputMatrix(unsigned int N,unsigned int 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][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;
				}
			}
		}
	}
}


Результат:
Код
Количество строк матрицы(1..100):3
Количество столбцов матрицы(1..100):4
[1][1]=23
[1][2]=34
[1][3]=45
[1][4]=6
[2][1]=3
[2][2]=-6
[2][3]=34
[2][4]=2
[3][1]=-5
[3][2]=23
[3][3]=45
[3][4]=67
Исходная матрица:
     23      34      45       6
      3      -6      34       2
     -5      23      45      67
Столбцы не содержащие ни одного отрицательного элемента:3,4
Найдено 2 столбца не содержащих отрицательных.
Желаете еще раз(Y/N)?:

Micren

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

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

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

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

Рейтинг: 122

Gluck

8-й класс

Рейтинг: 61

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

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

Рейтинг: 48

CradleA

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

Рейтинг: 2

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

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

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0