Witam!
Rozwiązuje zadanie na SPOJ o numerze: PP0604A utworzyłem obiekt o nazwie srednia ktory posiada jedno metode wczytaj() jest to metoda ktora realizuje wszystkie kroki przewidziane dla pojedynczego testu SPOJ. W funkcji main wykonuje się pętla for X-razy w każdej następuje stworzony obiekt oraz wykonana na nim metoda wczytaj(); Program zwraca jednak nieznany dla mnie błąd SIGSEGV, nie bardzo wiem gdzie jest błąd. Czy ktoś mógłby rzucić okiem na ten program ?
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
class srednia
{
private:
int ile = 0,suma = 0, wynik = 0;
public:
int wczytaj()
{
cin >> ile; // wprowadzenie wartosci do zmiennej ile
int* tablica_1 = new int [ile]; // tworzy tablice o "ile" miejscach
for(int i=0;i<ile;i++)
{
cin >> tablica_1[i]; // wpisuje "ile" danych do tablicy
suma += tablica_1[i];
}
float srednia = (float)suma/(float)ile;
float* tablica_2 = new float [ile]; // tworzy druga tablice
for(int i=0;i<ile;i++)
{
tablica_2[i] = abs(tablica_1[i] - srednia); // wartosc bezwzgledna roznicy wartosci i z tablicy_1 do sredniej z tablicy_1
}
delete[] tablica_1;
tablica_1 = NULL;
float minimum = tablica_2[0];
for(int i=0;i<ile;i++)
{
if(tablica_2[i]<minimum)
{
minimum = tablica_2[i];
wynik = i;
}
}
delete[] tablica_2;
tablica_2 = NULL;
cout << wynik;
}
};
int main()
{
int test;
cin >> test;
for(int i=0;i<test;i++)
{
srednia p[i];
p[i].wczytaj();
}
return 0;
}