I
ilya1989
Значит,условия задачи следующие:
Даны вещественные массивы A[7][4], F[7][4]. Для каждого
массива опpеделить: сpеднее аpифметическое отpицательных
элементов, сpеднее аpифметическое положительных
элементов, наименьшее из всех положительных значений.
Вот код программы,который я смог написать:
Даны вещественные массивы A[7][4], F[7][4]. Для каждого
массива опpеделить: сpеднее аpифметическое отpицательных
элементов, сpеднее аpифметическое положительных
элементов, наименьшее из всех положительных значений.
Вот код программы,который я смог написать:
Код:
#include <iostream.h>
#include <conio.h>
#define I 7
#define J 4
void VvodMas(double [I][J],char);
void RashetMas(double[I][J],double&,double&,double& );
void PrintRez(double [I][J],char,double& ,double& ,double& );
void main()
{
double A[I][J],F[I][J];
double min_A,min_F;
double sr_ar_otr_A,sr_ar_otr_F;
double sr_ar_pol_A,sr_ar_pol_F;
VvodMas(A,'A');
VvodMas(F,'F');
RashetMas(A,sr_ar_otr_A,sr_ar_pol_A,min_A);
PrintRez(A,'A',sr_ar_pol_A,min_A,sr_ar_otr_A);
RashetMas(F,sr_ar_otr_F,sr_ar_pol_F,min_F);
PrintRez(F,'F',sr_ar_pol_F,min_F,sr_ar_otr_F);
getch();
}
void VvodMas(double o[I][J], char name)
{
int i,j;
cout<<"\nVvedite chislo v elementi massiva "<<name<<"\n";
for(i=0;i<I;i++)
for(j=0;j<J;j++)
{
cout<<"\n["<<i<<"]["<<j<<"] =";
cin>>o[i][j];
}
}
void RashetMas(double a[I][J],double &sr_ar_otr,double &sr_ar_pol,double &min)
{
int i,j;
sr_ar_otr=0;
sr_ar_pol=0;
min=0;
double kol_otr=0;
double kol_pol=0;
double sum_pol=0,sum_otr=0;
for(i=0;i<I;i++)
for(j=0;j<J;j++)
{
if(a[i][j]<0)
{
kol_otr++;
sum_otr+=a[i][j];
sr_ar_otr=(sum_otr/kol_otr);
}
if(a[i][j]>0)
{
min=a[i][j];
kol_pol++;
sum_pol+=a[i][j];
sr_ar_pol=(sum_pol/kol_pol);
cout<<"min "<<min<<"\n";
}
else if(min>a[i][j])
min=a[i][j];
}
}
void PrintRez(double d[I][J],char names,double &sr_pol,double &min,double &sr_otr)
{
cout<<"Massiv "<<names<<":\n";
for(int i=0;i<I;i++)
{
cout<<"\n";
for(int j=0;j<J;j++)
{
cout.width(8); // минимальное кол-во позиций
cout.precision(2); // 2 знака после запятой
cout<<d[i][j];
}
}
cout<<"\nSrednee ariphmeticheskoye polozhitel`nih elementov massiva "<<names<<"ravno "<< sr_pol<<"\n";
cout<<"Minimal`noye iz polozhitel`nih znacheniy massiva "<<names<<" ravno "<<min<<"\n";
cout<<"Srednee arifmeticheskoye otritsatel`nih elementov massiva "<<names<<" ravno "<<sr_otr<<"\n";
}
C++:
//Значит,Всё бы ничего,но никак не получается по условию задачи определить минимальный положительный(>0)элемент в массиве.Уже чего только не перепробовал.Учусь на заочке,в программировании я начинающий.
Сразу опишу,что я пытаюсь сделать:
if(a[i][j]>0)//это условие проверяет все положительные элементы,которые >0.Далее,в теле условия видно,что сначала //за минимальный положительный элемент массива(min=a[i][j])берется первый попавшийся введёный элемент в массив.
{
min=a[i][j];
kol_pol++;
sum_pol+=a[i][j];
sr_ar_pol=(sum_pol/kol_pol);
cout<<"min "<<min<<"\n";
}
else if(min>a[i][j])//а это условие якобы проверяет,есть ли в массиве элементы ещё меньше,чем элемент,сохранённый в переменной min.
//Итог:помогите пожалуйста скорректировать программу таким образом,чтобы в переменной min сохранялось МИНИМАЛЬНОЕ положительное значение массива.Буду Вам за помощь очень признателен! Заранее спасибо!
min=a[i][j];
}