одномерный массив

  • Автор темы Olchik
  • Дата начала
O

Olchik

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

Код:
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
int a[5]={5,13,9,7,11},i,min_1,min_2,sr_ar,i_min_1,i_min_2;
int min=a[0];
for(i=0;i<5;i++)
if(a[i]<min)
{
min_1=a[i];
i_min_1=i;
}
cout<<"min_1="<<min_1<<endl;
cout<<"i_min_1="<<i_min_1<<endl;
min=a[0];
for(i=0;i<5;i++)
if(a[i]<min && i!=i_min_1)
{
min_2=a[i];
i_min_2=i;
}
cout<<"min_2="<<min_2<<endl;
cout<<"i_min_2="<<i_min_2<<endl;
sr_ar=(min_1+min_2)/2;
cout<<"sr_ar="<<sr_ar<<endl;
getch ();
return 0;
}
 
O

Odin_KG

#2
По-моему, у вас второй цикл работает впустую:

Код:
min=a[0];
for(i=0;i<5;i++)
if(a[i]<min && i!=i_min_1)
{
min_2=a[i];
i_min_2=i;
}
У вас при в начале min=5, а значит условие if(a<min && i!=i_min_1) никогда не выполнится, потому что a не может быть меньше, чем 5.
 
O

Olchik

#3
ага..увидела..а как это исправить,чёт я не пойму7
 
O

Odin_KG

#4
Легче всего вместо:
min=a[0];
написать:
min=100000000;

если 100000000 будет самое большое число в массиве , то цикл будет работать верно.
 
O

Olchik

#5
но всё-равно,если исправить на min=100000000, то мин_1=11,а мин_2=7,
а должно быть 5 и 7
 
O

Odin_KG

#6
ну,у вас и в первом цикле та же самая байда:
int min=a[0];
поставьте:
int min=100000000;

рекомендую научиться пользоваться отладчиком - мне с экрана глазами искать труднее.