• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie PP0604A Nieznany Błąd SIGSEGV

Object Storage Arubacloud
0 głosów
114 wizyt
pytanie zadane 11 grudnia 2016 w C i C++ przez unbearable Początkujący (450 p.)
edycja 11 grudnia 2016 przez unbearable

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;
}
 

1 odpowiedź

0 głosów
odpowiedź 12 grudnia 2016 przez Jackobs Bywalec (2,430 p.)
"wynik=i" przez co Twoja pętla w mainie nigdy się nie skończy.

Za szybko też usuwasz tabele_1 bo to z niej masz pobrać rozwiązanie.

Podobne pytania

0 głosów
1 odpowiedź 193 wizyt
pytanie zadane 11 grudnia 2019 w C i C++ przez Jacuchna0 Użytkownik (640 p.)
0 głosów
1 odpowiedź 316 wizyt
pytanie zadane 19 stycznia 2019 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
0 głosów
1 odpowiedź 459 wizyt

92,568 zapytań

141,422 odpowiedzi

319,638 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...