61 / 80
Mar 2020

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.

@narbej To ironia. Niestety dziesiątki początkujących powielają materiał z kursu MZ, a później potrzebują pomocy na różnych polskich forach programistycznych. Już wyczuliłem się na to specyficzne użycie wskaźników czy inne mankamenty.

1 year later

Witam, czy ktoś wie dlaczego wywala mi błąd przy zgłaszaniu?

Wszystkie liczby, które testowałem, wychodzą mi dobrze. Co robić?

Przecież nie przechodzi nawet przykładowego testu

eee… co ty robisz i jakie zadanie próbujesz zrobić ?? bo odwrócenia kolejności elementów tam nie widzę i jakiegokolwiek prawidłowego wyniku również…

  1. To żart? Po co mam przeklejać kod skoro mam ideone. Jeśli na ideone nie działa to znaczy, że nie działa…
  2. Tak naprawdę Twoim problemem jest to, że na Ideone działa tzn. przyjmuje dane wejściowe i podaje wyniki. Zagadką jest tylko czym są te wyniki, bo nie widać ich związku z oczekiwanym rozwiązaniem.
  3. Nie chce mi się analizować Twój kod dopóki nie zwraca poprawnych wyników chociażby dla danych wejściowych, ale dwie wskazówki:
    a. niepoprawnie deklarujesz tablicę pierwszy
    b. po co dołączasz pliki nagłówkowe cmath oraz string jeśli z nich w ogóle nie korzystasz?

Ma działać wszędzie, a jak chcesz zaliczać na Spoju to na Ideonie przede wszystkim. Nie rozumiem co robi ten program, a zadanie można zrobić duuuużo prościej.

nie wiem skąd wzięła sie moda na takie deklaracje ? Jak studiowałam to pałę z miejsca bym chyba dostała za takie coś…

Może powinieneś pisać dokładniej jaki masz problem? No i dokładniej kodować?

No i jak Ci radzą, używać ideone nie tylko jako pastebin ale i do testowania - jest tam okienko stdin i tam wklejaj zawsze! test.

Jednym słowem nie tylko deklaruj ale i jak trzeba także innicjalizuj, bo jak nie to raz będziesz miał taki wytnik a innym razem inny.
Czyli patrz linia 21

PS
Nie musisz wcale wszystkiego wczytywać od razu w całości. Możesz wczytać jedną porcję danych, wypisać wynik dla tej porcji, a następnie wczytać kolejną itd.

W tym zadaniu zamiast tablicy, można użyć stosu lub sprytnej rekurencji - ale to już inna bajka. Ja użyłem tablicy. Jednak w C++ najlepiej jest zastosować wektor - dynamiczna, bezpieczna tablica [kontener].

Masz rację, niezbyt się rozpisałem. Wiem, że powinienem być bardziej szczegółowy, ale szczerze mówiąc byłem wtedy lekko podirytowany. Wiem już też, że najpierw zawsze powinienem sprawdzać program na ideone przed wysyłaniem. Problem w moim kodzie był taki, że deklarowałem w incie zbyt dużą tablicą, ot wszystko. Dziękuje wszystkim za naprowadzenie.

1 year later