59 / 153
Nov 2016

Jak zawsze jakiś głupi błąd nad którym siedziałam godzinę.. ale dałam radę, dzięki! ( i tak, sama napisałam :v)

2 months later

Proszę o pomoc. Co napisałem w kodzie źle? Wywala mi błąd RE - runtime error (bład wykonania) - program poprawnie się skompilował, jednak działanie programu zostało przerwane jednym z sygnałów: - SIGSEGV (signal 11) - "segmentation fault", najczęstszy błąd (przekroczenie dozwolonego obszaru pamięci, etc...);
Link do mojego kodu: http://ideone.com/apryvI12

skoro wiesz, co znaczy ten błąd, to powinieneś także wiedzieć, że najczęściej jest to przekroczenie na skutek błędnego odwołania do elementu tablicy - więc może popatrz w swoim programie na:

tworzenie tablic
odwołania do elementów

dużo pracy nie maszt, tablicę masz tylko jedną :slight_smile:

Dzięki za Twoje zainteresowanie moim problemem. Wydaje mi się że rozwiązałem problem, ale sędzia dalej daje WA. Czy można gdzieś sprawdzić dla jakiego konkretnie warunku nie zaliczył kodu. A może czas pomyśleć nad zupełnie nowym kodem?
link http://ideone.com/n2Oizs27

W twoim kodzie widzę za mało komentarzy.
Dziwne, nawet jeden mały, zamienia twój kod w kod AC. No może nie dziwne. Dopisz dwie kreseczki komentujące "//", na początku linii 27 i sam się przekonaj.

Z powyższego wynika, że można pomyśleć nad ulepszeniem tego kodu, nie koniecznie nad nowym.

Dlaczego ideone daje mi inne wyniki niż code blocs (ten drugi bardziej mnie kocha). Podejrzewam, że jest coś nie tak z tablicami.

Dokładnie tak. Blocks zeruja pewną zmienną za ciebie, a ideone czasami tak, a czasami nie, w zależności od humoru - oczywiście żartuję.

Wszystko zależy jak intensywnie wcześnie była "używana" przydzielana pamięć. Pamiętaj, że zmienne lokalne nie są automatycznie zerowane. Wystarczy więc to tylko zrobić, dodać tylko 3-4 znaczki [wliczając dwie spacje] w odpowiednim miejscu: " = 0" i już :wink:

dobra. Teraz ideone pokazuje dobre wyniki ale spoj wyswietla bledną odpowiedź.

Miałeś poprawić tylko jedną jedyną, błędną rzecz, a nie wprowadzać inne poprawki i powodować nowe błędy.

3 months later

Algorytm wygląda na poprawny (ale bardzo dokładnie nie sprawdzałem :wink: ), brakuje Ci nowej linii po każdej odpowiedzi.

Witam. Spoj pokazuje bledna odpowiedz mi natomiast niestety nie udalo sie znalezc bledu.(biblioteki to iostream cmath stdlib.h math.h w komentarzu nie pokazywalo wiec tu pisze)

include

include

include

include

using namespace std;
int n,t,j;
double srednia,najblizsza,suma,m;

int main()

{
cin>>t;
double *testy=new double [t];
for(int i=0; i<t; i++)
{
suma=0;
cin>>n;
int *tab=new int [n];
for(int j=0; j<n; j++)
{
cin>>tab[j];
suma+=tab[j];
}
srednia=suma/n;

    double *odleglosc=new double [n];

    for(int j=0; j<n; j++)
    {
        odleglosc[j]=fabs(srednia-tab[j]);
    }


    m=odleglosc[j];

    for(int j=0; j<n; j++)
    {
        if(m>odleglosc[j])
            m=odleglosc [j];
    }

    najblizsza=tab[j];
    for (int j=0; j<n; j++)
    {
        if(m==fabs(srednia-tab[j]))
        {
            najblizsza=tab[j];
            break;
        }
    }
    cout<<najblizsza;


}
return 0;

}

6 months later

Cześć
zerknie ktoś na kod ?
nie bardzo mogę się połapać co jest nie tak.
[kod usunięty]
pozdrawiam

sprawdź wynik dla takich danych:

6
4 8 10 4 10
4 10 8 10 4
4 8 11 4 10
4 11 8 10 4
4 11 10 4 8
4 8 11 10 4

ACC:smiley:
Sprawdziłem wyniki, pętla przepisująca wartość była niepoprawna. Dzięki więc za testy bo bardzo pomogły. :slight_smile:
Swoją drogą zaczęło mnie zastanawiać jaka jest logika pisania takich testów do programów, w sensie skąd wiesz że to w tym konkretnym miejscu może być błąd, albo tu się “kryje niespodzianka” :thinking: ?