60 / 153
Nov 2016

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: ?

bo mam wewnętrzny kwantowy kompilator C/C++ i na nim potrafię w sposób równoległy przetestować wszystkie możliwe dane wejściowe - potem tylko wybieram te co dały zły wynik :slight_smile:

a serio to programuję zawodowo, a ostatnie lata to głównie poprawianie cudzych kodów

14 days later

[kod usunięty]
Jakieś testy, które pokażą błędne wyniki ktoś znajdzie? Byłbym zobowiązany :smiley:

ahm… dobra xDD przeszło :smiley: Dzięki, chyba za długą przerwę w programowaniu miałem, że taki bład zrobiłem xD

19 days later

Hej. Mam prośbę, czy podpowie mi ktoś dlaczego wyrzuca błędną odpowiedź ?

Błędnie zakładasz, że ciąg jest monotoniczny:

1
6 1 2 3 4 3 1

Twoja odpowiedź:

3