Witam
od razu wspomnę że nie znalazłem problemu w działaniu mojego skryptu u mnie wszystko działa
stworzyłem kod rozwiązujący pracę domową z odc 11 c++ " skrypt wyszukujący najbliższą liczbę do średniej z podanych liczb " udało się wszystko działało po czym dowiedziałem się o spoj i znalazłem tam bardzo podobne zadanie (przerobiłem skrypt na potrzeby zadania)
treść zadania z spoj:
W tablicy n liczb całkowitych dodatnich znajdź tę, której wartość jest najbliższa warości średniej z wszystkich liczb.
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.
i nadal wszystko u mnie działa poprawnie nie znalazłem żadnego błędu podczas wykonywania skryptu
ale spoj po sprawdzeniu podaję że wynik wykonania skryptu był błędny i tutaj mam pytanie co zrobiłem nie tak że mój skrypt nie może przejść testu na spoj
jestem bardzo początkującym w c++ i nie znam się na tym zbyt dobrze
mój kod:
#include <iostream>
using namespace std;
float ab(float x)
{
if (x < 0) x = x * (-1);
return x;
}
int num_var;
int var[101];
float diff[101];
float avg, m;
int closest;
int ile;
int main()
{
cin >> ile;
for (int i = 0; i < ile; i++)
{
cin >> num_var;
avg = 0;
for (int i = 0; i < num_var; i++)
{
cin >> var[i];
avg += var[i];
}
avg /= num_var;
for (int i = 0; i < num_var; i++) diff[i] = ab(avg + (var[i] * (-1)));
m = diff[0];
for (int i = 0; i < num_var; i++)
{
if (m > diff[i])
{
m = diff[i];
closest = i;
}
}
cout << var[closest] << endl;
}
return 0;
}
krótki opis mojego kodu:
- pobiera wartość ile razy ma się wykonać
- pobiera ile liczb zostanie dodanych
- oblicza średnią
- oblicza wartość bezwzględną z różnicy pomiędzy średnią a wartością dodanej liczby
- szuka z pośród podanych liczb na podstawie wielkości różnicy najbliższej liczby do średniej
- wypisuję liczbę najbliższą średniej