54 / 80
Jun 2019

@majormarino
Nie obrażę się, ale z chęcią dowiem się która uwaga jest zbędna. Chyba, że chodzi Ci tylko by zaliczyć zadanie, a gówniany kod Ci nie przeszkadza, wtedy faktycznie cenna była tylko czwórka.

2 months later

Panowie, pomożecie czemu sędzia on-line mi to odrzuca? u mnie w code::blocks to chodzi bez problemu

#include

using namespace std;

int n,t;
int tab[100];

int main ()
{
cout<<"Podaj liczbe testow: ";
cin>>t;

if (t<=100)
{
    for (int i=0; i<t; i++)
    {
        //cout<<"Podaj ilosc elementow "<<i+1<<" tablicy: ";
        cin>>n;

        for (int i=0; i<n; i++)
        {
            //cout<<"Podaj "<<i+1<<" element tablicy: ";
            cin>>tab[i];
        }

        cout<<"Tablica odwrocona znajduje sie ponizej"<<endl;

        for (int i=n-1; i>=0; i--)
        {
            cout<<tab[i]<<" ";
        }
        cout<<endl;
    }
}

return 0;

}

wskazane jest przekazywanie kodu poprzez link do ideone.com9
tam też można testować program, zrób to dla przykładowych danych podanych w zadaniu a powinieneś zobaczyć różnicę

7 months later

dlaczego sędzia nie zalicza mi tego zadania.

Pozdrawiam,
i z góry dziękuję za pomoc.

Przecież nawet zadanie testowe nie jest poprawnie wykonane. Przypatrz się drugiej pętli for.

7 months later

Witam
Pomorze mi ktoś napisałem program i niby wszystko się zgadza ale pokazuję błąd w wykonaniu. Trochę poczytałem o tym ale nadal nie bardzo rozumiem.

Link do kodu:

Wstaw poprawnie kod i sformatuj go. Tablice o rozmiarze n indeksujemy od 0 do n - 1. Dlatego masz dwie pętle źle napisane. Rozmiar tablicy powinien wynosić 100 (patrz treść zadania).

Przyklad troszke trudniejszy niz w tresci zadania:

Wejście:
11 12 13

Wyjście:
13 12 11

1 month later

o czym zapominam?

To raczej nie kwestia zapominania, chyba, że zapomniałaś,że masz już w tym zadaniu 3 x AC ? :wink:

Jeżeli natomiast chcesz poćwiczyć wskaźniki itd, to robisz to w dziwaczny sposób. Twój kod całkowicie mi się nie podoba, nawet po poprawkach. A jak, np tak:

zamiast:

...
 cout << OdwrocKolejnoscLiczb(ileLiczb);
 }
    delete [] OdwrocKolejnoscLiczb(ileLiczb);

można w ostateczności delete[] zamiast cout, w środku pętli, a nie poza nią – tutaj cout jest błędem.

...
delete [] OdwrocKolejnoscLiczb(ileLiczb);
    }

Jeszcze moze warto wspomniec, ze wskazniki wlasciwie nie uczestnicza w przetwarzaniu danych.

Gorzej nawet. Nawet po mojej poprawce jest i mały wyciek pamięci i mazanie po niezalakowanej [nie przydzielonej] pamięci.

PS
takie tworzenie tablicy:

int liczby[iloscElementow];

Jest błędne - ani to tablica statyczna ani dynamiczna - to po prostu gruby, często stotykany tutaj na spoju u początkujących błąd. Dla małych wartości ilości elementów działa, ale tym bardziej można się szybko naciąć, jeżeli wejdzie taki błąd w nawyk.

Mazanie po pamieci juz bylo.
Gdy wstawi sie delete[] zamiast cout w petli to wycieku chyba nie bedzie. Poza petla trzeba oczywiscie usunac cala linijke z delete.

Oczywiście masz rację. Po prostu kod jest mocno przekombinowany - lub patrząc z drugiej strony, po prostu napisany przez początkującą osobę z błędami, które utrudniają [mi] analizowanie kodu i wydawało mi się, że będzie nadal mały wyciek w innym miejscu [zmienna int *w], ale jednak nie.

Dzięki za uwagi. Akurat nie skupiałam się jeszcze na ćwiczeniu wskaźników a szukałam bardziej sposobu na zwrócenie tablicy, podobno można właśnie przez wskaźnik. Chyba po prostu muszę się skupić na doczytaniu o tablicach i wskaźnikach, i podejść do problemu jeszcze raz :>

W takim razie jestem pełen podziwu. Nie uczyłaś /ćwiczyłaś wskaźników, a “ukręciłaś” taki kawał kodu, nie żartuję! Fakt że z błędami ale i tak podziwiam.

Co do zwracania - tak można, ale to już trochę historia bo jest dużo lepszy sposób - referencja.

Najlepszym sposobem [jedynym?] nauczenia się czegokolwiek jest robienie tego i upadanie [jazda na koniu, na rowerze czy programowania]. Ale od czasu do czasu trzeba też poczytać zaczynając od podstaw - a co czytasz?

SPOJ ma wiele zalet i wad. Jedną z najbardziej mnie niepokojącą jest to, że może utrwalać błędy programisty. Więc musisz zdawać sobie sprawę, że mimo AC, twój kod może być fatalny. Jak temu zapobiec? Jedyny sposób jaki widzę - znajdź sobie mentora, który sprawdzi twój kod i zwróci uwagi na błędy. Inny sposób, to kodowanie we dwie osoby i sprawdzaniwe na wzajem swoich kodów. Na forum nie można tego robić, bo są osoby słabe duchem i dostępny tutaj gotowy kod nie byłby dla nich dobry.

Nie uczyłaś /ćwiczyłaś wskaźników, a “ukręciłaś” taki kawał kodu, nie żartuję! Fakt że z błędami ale i tak podziwiam.

Ach ten Mirosław Zelent zainspirował tylu programistów do takiego używania wskażników :frowning:

Czyli mentora już masz, a czy jego filmiki zainspirowały kogokolwiek? Kliknięcie w jego filmik, swoją drogą moim zdaniem, to strata czasu, jeszcze o niczym nie świadczy wbrem temu co on twierdzi. Ktoś kto bardzo chce zostać [dobrym] programistą to jeżeli zostanie to napewno nie dzięki nim [niemu] a nawet mimo złego wpływu błędów w tych filmikach.