Консультация № 173371
17.10.2009, 23:44
0.00 руб.
0 2 1
Здравствуйте, эксперты.
Помогите мне с заданием: Даны массивы A[3][5], B[3][5]. Для каждого массива
определить номер столбца с максимальным
элементом. В столбце с максимальным
элементом все отрицательные элементы
заменить на ноль.
В программе предусмотреть ввод массивов и
вывод исходных данных и результатов.
Исправьте, пожалуйста, мои ошибки.

Приложение:
#include<iostream.h>
#include<iomanip.h>
//прототипы функции
void input(float [3][5],char);
void schet(float [3][5],int&,int&);
void output(float [3][5],char,int,int);
void main()
{
//объявление массивов
float A[3][5],B[3][5];
//и переменных для определения номера столбца с максимальным элементом и замены отрицательных элементов на ноль
int Amax,Aindex,Bmax,Bindex;
input(A,'A');
input(B,'B');
schet(A,Amax,Aindex);
schet(B,Bmax,Bindex);
output(A,'A',Amax,Aindex);
output(B,'B',Bmax,Bindex);
}
//определение функции ввода массива
void input(float x[3][5],char name)
{
int i,j;
cout<<"BBoguM MaccuB"<<name<<endl;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
{
cout<<"BBeguTe"<<name<<"["<<i<<"]["<<j<<"]=";
cin>>x[i][j];
}
}
void schet(float x[3][5],int&max,int&index)
{
int max=0;
int index=0;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
{
if(A[i][j]>=max)
{
index=j;
max=A[i][j];
}
}
for(i=0;i<3;i++)
if(A[i][index]<0)
A[i][index]=0;
else;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
{
if(B[i][j]>=max)
{
index=j;
max=B[i][j];
}
}
for(i=0;i<3;i++)
if(B[i][index]<0)
B[i][index]=0;
else;
//BbIBog ucIIPaBJIeHHbIx MaccuBoB
void output(float x[3][5],char name,int max,int max_i)
{
int i,j;
cout<<"UcxogHbIu MaccuB"<<name<<":"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
cout<<setw(5)<<x[i][j];
cout<<endl;
}
cout<<"HoMeP cToJIbca c Max eJIeMeHToM"<<name<<"SaMeHa oTPuCaTeJIbHbIx eJIeMeHToB Ha HoJIb"<<endl;
}

Обсуждение

Неизвестный
18.10.2009, 00:44
общий
это ответ
Здравствуйте, Сидорова Юлия Евгеньевна!
Постарался внести как можно меньше изменений в вашу программу для того, что бы вам было проще разбираться.
При передаче массива в функцию первый размер можно не указывать, а второй -- обязательно. Желательно передавать число строк и стоблцов. Начальное значение для поиска максимального значения обязательно должно браться из массива (например элемент 0,0).

Приложение:
#include<iostream.h>
#include<iomanip.h>

//прототипы функции
void input(float [][5],int,int,char);
void schet(float [][5],int,int,int&);
void output(float [][5],int,int,char);

void main()
{
//объявление массивов
float A[3][5],B[3][5];
//и переменных для определения номера столбца с максимальным элементом
// и замены отрицательных элементов на ноль
int index;
input(A,3,5,'A');
cout<<endl;
output(A,3,5,'A');
schet(A,3,5,index);
cout<<endl;
cout<<"Nomer Max stolbca " << index <<endl;
cout<<endl;
output(A,3,5,'A');

cout<<endl;
input(B,3,5,'B');
cout<<endl;
output(B,3,5,'B');
schet(B,3,5,index);
cout<<endl;
cout<<"Nomer Max stolbca " << index <<endl;
cout<<endl;
output(B,3,5,'B');
cin >> index;
}
//определение функции ввода массива
void input(float x[][5],int m,int n,char name)
{
cout<<"BBoguM MaccuB "<<name<<endl;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
cout << "BBeguTe"<<name<<"["<<i<<"]["<<j<<"]= ";
cin >> x[i][j];
}
}

void schet(float x[][5],int m,int n, int &index)
{
float max=x[0][0];
index=0;
for(int i=0; i<m;i++)
for(int j=0; j<n;j++)
if(x[i][j]>max)
{
index=j;
max=x[i][j];
}
for(int i=0;i<m;i++)
if(x[i][index]<0) x[i][index]=0;
}


void output(float x[][5],int m,int n, char name)
{
cout<<"UcxogHbIu MaccuB "<< name <<" : "<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cout<<setw(5)<<x[i][j];
cout<<endl;
}
}
Неизвестный
18.10.2009, 00:49
общий
Спасибо большое!
Форма ответа