Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Spoj zadanie SPEEDM, bład wykonania (SIGSEGV)

muzumaki 03 Cze 2016 19:44 765 3
  • #1 03 Cze 2016 19:44
    muzumaki
    Poziom 2  

    Witam, skończyłem niedawno pisać kod do podanego zadania stosując algorytm pakowania plecaka (którego rozumiem założenia, nie wzorowałem kodu na innym tego typu problemie, to moje własne wypociny więc przepraszam za nieoptymalny zapis) i wyniki dostaję dobre. Jednak spoj nie przepuszcza mi zadania wypisując błąd (SIGSEGV). Jak szukam tak nie mogę znaleźć żadnej linijki w której coś jest nie tak. Dane wejściowe są następujące: 1<=n<=5000, dane wpisywane do tablicy są całkowite nieujemne, a ich suma nie przekracza 10 000. Macie pomysł o co chodzi? Dzięki za wszelką pomoc.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 3
  • Pomocny post
    #2 03 Cze 2016 20:18
    mi14chal
    Poziom 28  

    Tutaj jest problem:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Tak się nie robi.

    0
  • #3 03 Cze 2016 21:26
    muzumaki
    Poziom 2  

    Dzięki wielkie! Masz rację, po zmianie rozmiaru tablicy zniknął błąd wykonania, ale teraz mam błędną odpowiedź. No trudno, pozostało ją znaleźć. Wstawiam zmieniony kod jakby komuś chciało się spojrzeć

    Kod: c
    Zaloguj się, aby zobaczyć kod


    edit:
    Problem rozwiązany. Błąd był trywialny, rozmiar tablicy nie powinien być 5000, tylko 5001, bo zaczynam od 0. Dzięki za pomoc :)

    0
  • #4 04 Cze 2016 15:43
    JacekCz
    Poziom 36  

    muzumaki napisał:
    Dzięki wielkie! Masz rację, po zmianie rozmiaru tablicy zniknął błąd wykonania, ale teraz mam błędną odpowiedź

    ....

    edit:
    Problem rozwiązany. Błąd był trywialny, rozmiar tablicy nie powinien być 5000, tylko 5001, bo zaczynam od 0. Dzięki za pomoc :)


    Z deka pozamiatałeś problem indeksów pod dywan, niż w sposób pewny rozwiązałeś :) Danie zakresu sporo za dużo rzeczywiście w konkretnej sytuacji leczy problem (błąd +1 -1 jest dość częsty w C) i sam tak z rzadka robię, ale nie jest to eleganckie, oszczędne, elastyczne itd...

    Jak widzę kod gdzie autor świadomie używa zakresu indeksów "na ciasno", wzbudza we mnie większe poczucie autorytetu.


    mi14chal napisał:
    Tutaj jest problem:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Tak się nie robi.


    W nowszym standardzie C to jest legalne. Prawdopodobnie kolega już w nim kompiluje skoro nie ma mowy o błędach kompilacji.

    0