Treść zadania:
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.
Example
Input:
3
4 1 2 3 4
4 4 3 2 1
4 0 3 2 4
Output:
2
3
2
Mój kod:
#include <iostream>
int main() {
int T, modulo, outcome;
double sum, average, num;
int * tab;
std::cin >> T;
for (int t = 0; t < T; ++t) {
sum = 0.0;
outcome = 0;
std::cin >> num;
int number = num;
tab = new int[number];
for (int i = 0; i < num; ++i) {
std::cin >> tab[i];
}
for (int j = 0; j < num; ++j) {
sum += tab[j];
}
average = sum / num;
average *= 10;
modulo = (int)average % 10;
average /= 10;
if (modulo < 5) {
for (int k = 0; k < num; ++k) {
if (tab[k] > outcome && tab[k] <= average) {
outcome = tab[k];
}
}
std::cout << outcome << "\n";
}
else if (modulo > 5) {
outcome = 100;
for (int l = 0; l < num; ++l) {
if (tab[l] < outcome && tab[l] >= average) {
outcome = tab[l];
}
}
std::cout << outcome << "\n";
}
else {
int a, b;
for (int k = 0; k < num; ++k) {
if (tab[k] > outcome && tab[k] <= average) {
a = tab[k];
}
}
outcome = 100;
for (int l = 0; l < num; ++l) {
if (tab[l] < outcome && tab[l] >= average) {
b = tab[l];
}
}
for (int l = 0; l < num; ++l) {
if (tab[l] == a) {
std::cout << a << "\n";
break;
}
else if (tab[l] == b) {
std::cout << b << "\n";
break;
}
}
}
}
return 0;
}
Cały czas dostaję komunikat o błędnej odpowiedzi. Prosiłbym o pomoc.