• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Уважаемые форумчане!Помогите пожалуйста с решением задачи.

  • Автор темы ilya1989
  • Дата начала
I

ilya1989

Значит,условия задачи следующие:
Даны вещественные массивы 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];
}
 
I

ilya1989

Спасибо за советы)))))только вы поймите одно-умничать особо не стоит,я ведь не совсем в этом чайник)))))вы мне получается,каждый по кусочку предлагаете))))а толку 0))))вы предложите мне пожалуйста готовый вариант функции RashetMas)))))и всё)))))а остальное придёт с опытом)))))ведь,согласитесь,не секрет,что вы сами были когда-то такими же начинающими,как и я)))))
чего ж тут юморить))))?не поверите,но вот этот вод бред,который можно назвать программой,писал почти 2 дня(в один день одно,в другой другое,по частям)....))))))так что,отнеситесь пожалуйста с пониманием)))))
 
I

ilya1989

Уважаемые DarkKnight125,OKEN)))Спасибо огромное за помощь))))всё исправил по вашим инструкциям,всё скомпилировал,всё работает)))
 
D

DarkKnight

Уважаемые DarkKnight125,OKEN)))Спасибо огромное за помощь))))всё исправил по вашим инструкциям,всё скомпилировал,всё работает)))
Да не за что ;-) Всегда рады :)
только вы поймите одно-умничать особо не стоит,я ведь не совсем в этом чайник)))))вы мне получается,каждый по кусочку предлагаете))))а толку 0))))
Да нет, мы не умничали, просто описывали проблемы в логике, что бы вы в следующий раз уже знали точно, что логичнее будет сделать так...
Никто и не думал ерничать и издеваться.. Уж поверьте....
чего ж тут юморить))))?не поверите,но вот этот вод бред,который можно назвать программой,писал почти 2 дня(в один день одно,в другой другое,по частям)....))))))так что,отнеситесь пожалуйста с пониманием)))))
Это временно... Конечно научитесь - это безспорно....
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!