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

Раздел: С / С++
Автор вопроса: dmi_5116
Дата: 27.02.2009, 16:54 Консультация неактивна
Поступило ответов: 1
Здравствуйте уважаемые эксперты!!!! Помогите пожалуйста решить задание:
Даны три матрицы А(2;2) В(2;3) С(4;3). В каждом из этих матриц найти максимальный элемент и заменить его нулем.

Ответ # 1, Micren (Посетитель)

Здравствуйте, dmi_5116!
Программа:
Код
#include <locale>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

// Заполняет матрицу случайными значениями и ваводит на экран
void initializeMatrix(const wchar_t* const msg,double* matrix,unsigned int dim1,unsigned int dim2)
{
	wcout<<msg<<endl;
	for(unsigned int i=0;i<dim1;i++)
	{
		for(unsigned int j=0;j<dim2;j++)
		{
			wcout<<setw(7)<<setprecision(5)<<(*matrix++=(double)rand()/RAND_MAX*50)<<L' ';
		}
		wcout<<endl;
	}
}

// Заменяет максимальный элемент нулем и выводит полученную матрицу
void changeMax2Zero(const wchar_t* const msg,double* matrix,unsigned int dim1,unsigned int dim2)
{
	double *end=matrix+dim1*dim2
		  ,*mPtr=matrix
		  ,*max=matrix;
	// Ищем максимальный
	while(mPtr!=end)
	{
		if(*max<*mPtr)max=mPtr;
		mPtr++;
	}
	// Меняем на 0
	*max=0;
	// Выводим результат
	wcout<<msg<<endl;
	for(unsigned int i=0;i<dim1;i++)
	{
		for(unsigned int j=0;j<dim2;j++)
			wcout<<setw(7)<<setprecision(5)<<*matrix++<<L' ';
		wcout<<endl;
	}
}

int main()
{
	// Инициализация генератора случайных чисел
	srand((unsigned int)time(0));
	locale::global(locale("rus_rus.866"));
	// Размерности матриц
	const int dimA1=2,
			  dimA2=2;
	const int dimB1=2,
			  dimB2=3;
	const int dimC1=4,
			  dimC2=3;
	// Матрицы
	double A[dimA1][dimA2],B[dimB1][dimB2],C[dimC1][dimC2];
	// Заполняем их
	initializeMatrix(L"Матрица A:",&A[0][0],dimA1,dimA2);
	initializeMatrix(L"Матрица B:",&B[0][0],dimB1,dimB2);
	initializeMatrix(L"Матрица C:",&C[0][0],dimC1,dimC2);
	// Результат
	changeMax2Zero(L"Матрица A после замены максимального на 0:",&A[0][0],dimA1,dimA2);
	changeMax2Zero(L"Матрица B после замены максимального на 0:",&B[0][0],dimB1,dimB2);
	changeMax2Zero(L"Матрица C после замены максимального на 0:",&C[0][0],dimC1,dimC2);
	system("PAUSE");
	return 0;
}

Пример работы:
Код
Матрица A:
 34.451  7.7883
 37.916  8.3041
Матрица B:
  6.212  36.123  47.932
 15.577  5.3575  27.076
Матрица C:
 6.0854  9.4928  34.191
 11.658  30.612  26.594
 34.393  35.932  44.958
  36.59  1.6373  23.457
Матрица A после замены максимального на 0:
 34.451  7.7883
      0  8.3041
Матрица B после замены максимального на 0:
  6.212  36.123       0
 15.577  5.3575  27.076
Матрица C после замены максимального на 0:
 6.0854  9.4928  34.191
 11.658  30.612  26.594
 34.393  35.932       0
  36.59  1.6373  23.457

Micren

Посетитель
27.02.2009, 18:28
Нет оценки ответа

Мини-форум консультации # 161557


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