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

Обсуждение

Неизвестный
27.02.2009, 18:28
общий
это ответ
Здравствуйте, 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
Форма ответа