Witajcie,
Jestem początkujący i właśnie przeszedłem lekcje 11 kursu c++, jednak nie do końca mogę poradzić sobie "zadaniem domowym". Otóż po uruchomieniu programu jaki zrobilem okazuje się, że działa on dla każdej konfiguracji liczb jaką sobie mogłem wymyślić, jednak nie działa tylko dla dwóch ostatnich przykładów z zadania (-55 -44 -33 11 22)(6.5 4.5 0 15 0). Podaje złe liczby jako najbliższe średniej, mimo, że zgodnie z tym co wypisuje się na ekranie kontrolnie, kiedy sprawdzam to w myślach, tak na logike z kodami "if", to powinno działać i podawać zupełnie inna liczbę. Może ktoś podpowie, co jest nie tak z tym kodem, bo głowie się i nic nie moge poradzić, aha no i zaznaczam, że jak zaczynałem pisać to nie znałem funkcji wartości bezwzględnej i chciałem zostać przy swoim rozwiązaniu :)
#include <iostream>
#include <math.h>
#include <cstdlib>
#include <conio.h>
using namespace std;
int main()
{
float tab[5];
float tab2[5];
int a = 0;
float suma = 0;
cout << "Podaj 5 liczb: "<<endl;
cin>>tab[0]>>tab[1]>>tab[2]>>tab[3]>>tab[4];
for(int i=0;i<5;i++) //wypisywanie tablicy (kontrolnie)
{
cout<<tab[i]<<" ";
suma += tab[i];
}
cout<<endl<<"suma = "<<suma; //wypisywanie sumy (kontrolnie)
float srednia = suma/5;
cout<<endl<<"srednia = "<<srednia<<endl; //wypisywanie sredniej
for(int j=0;j<5;j++)
{
if((srednia-(tab[j]))<0)
{
tab2[j] = -(srednia-(tab[j]));
cout<<tab2[j]<<endl;
}else{tab2[j] = (srednia-(tab[j])); cout<<tab2[j]<<endl;}
//cout<<"wartosc bezwzgledna: "<<tab[j]<<endl;
}
float m = tab[0];
if(tab2[0]<tab2[4]){m=tab[0];}
if(tab2[1]<tab2[0]) {m=tab[1];}
if(tab2[2]<tab[1]) {m=tab[2];}
if(tab2[3]<tab2[2]) {m=tab[3];}
if(tab2[4]<tab2[3]){m=tab[4];}
cout<<"liczba najblizsza sredniej to: "<<m;
return 0;
}