"Średnia arytmetyczna" na SPOJu

0

Hejka mam problem z zadaniem "Średnia arytmetyczna" na SPOJu i nie mam pojęcia co mam źle. Mógłby ktoś mi pomóc?
Treść:
Input
Najpierw t < 101 - liczba testów. W kolejnych liniach, dla każdego testu, liczba 0 < n < 100 i n liczb całkowitych dodatnich nie większych niż 100.
Output
Dla każdego testu, w kolejnych liniach, jedna liczba - pierwszy element tablicy, którego wartość jest najbliższa wartości średniej.
A to jest mój kod:

#include <iostream>
#include <cmath>
using namespace std;
int t,n;

int srednia(int n);
int main()
{
    cin >>t;
    for(int i=0;i<t;i++)
    {
     cin >>n;
     cout<<srednia(n)<<endl;
    }
return 0;
}
int srednia(int n)
{
int x,y,z=0;
float wynik=0,sr[t];
z++;
cin>>y;
wynik+=y;
    for(int i=1;i<n;i++)
    {
        cin>>x;
        wynik+=x;
    }
    sr[z]=wynik/n;
    if(y>sr[z]) return ceil(sr[z]);
    else if (y<sr[z])return floor(sr[z]);
    else if(y=sr[z]) return round(sr[z]);

}
0

Ten kod to jakieś pomieszanie z poplątaniem.

int x,y,z=0;
float wynik=0,sr[t];
z++;
  1. Tworzysz z równe 0 po czym nie używając z zmieniasz je nagle na 1 poprzez inkrementacje to czemu od razu nie napiszesz ,że z =1 ?
  2. sr[t]- t musiało by być stałą by to zadziałało. Co prawda niektóre kompilatory to przepuszczają, ale takie coś jest błędne.
sr[z]=wynik/n;
  1. Po co ci tablica skoro i tak zawsze zwracasz drugi element tablicy a z innymi nic nie robisz?
for(int i=1;i<n;i++)
    {
        cin>>x;
        wynik+=x;
    }
  1. Zdajesz sobie sprawę ,że taki warunek pętli zapewnia n-1 przejść zamiast n?

To tyle co mi się w oczy rzuciło ale program jest napisany tak źle ,że nawet trudno szukać błędów.

Ad. 4 Teraz zauważyłem ,że pierwszą liczbę wczytujesz już przed pętlą tylko pytanie po co tak robić?

0

Dzięki spróbuje go napisać od nowa w takim razie

1 użytkowników online, w tym zalogowanych: 0, gości: 1