logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

C++ Program z menu i strukturami - SIGSEGV i warning w linii 72

Ins0maniaC 28 Gru 2014 16:37 1257 10
REKLAMA
  • #1 14264406
    Ins0maniaC
    Poziom 17  
    Posty: 353
    Ocena: 10
    Witam. Zmagam się z projektem, dopiero zaczynam. Ma on obsługiwać auto-komis. Narazie wykonuje tylko kilka opcji, ale jest coś nie tak. Po skończeniu polecenia program się wykrzacza, a powinien wyczyścić ekran i wyświetlić menu po raz kolejny. Mimo, że kompiluje się.

    Debugger krzyczy- Program received signal SIGSEGV. Segmentation fault.

    @Edit:
    Teraz widać błąd- warning: 'saved_stack.4 may be used uninitialized in this function [W-uninitialized] w 72 linii.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 14264468
    witoldwitoldowicz
    Poziom 28  
    Posty: 698
    Pomógł: 163
    Ocena: 60
    W jakim środowisku to kompilujesz że nie masz błedów?
    samochod bazza[n];
    chyba powinna być
    samochod *bazza=new samochod[n];
  • REKLAMA
  • #3 14264534
    Ins0maniaC
    Poziom 17  
    Posty: 353
    Ocena: 10
    Ok, wsadziłem już to wszystko do tablicy dynamicznej i zrobiłem z wskaźnikami. Teraz podrzuciłby ktoś pomysł jak poradzić sobie z wyświetlaniem zawartości bazy danych? Nie mam pomysłu jak to zrobić- nie chodzi mi o podanie kodu, ale samej idei co z tym począć. No i najlepiej jakby te wszystkie dane gdzieś się zapisywały, rozumiem, że do pliku, ale z tym może później. Na teraz muszę jeszcze zrobić wyszukiwanie według wprowadzonych danych- na przykład marka Audi, model A3, pojemność większa od 2000 i filtrowanie względem danych kategorii. Na przykład alfabetycznie marka. Każde pomysły mile widziane.

    Kod na teraz:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #4 14264573
    witoldwitoldowicz
    Poziom 28  
    Posty: 698
    Pomógł: 163
    Ocena: 60
    Jeszcze zadeklaruj zmienną samochod *bazza globalnie bo teraz zakres jej widoczności jest tylko w case '1' czyli między klamrami {}.
    Najlepiej wykorzystaj std::vector jako zasobnik structur samochod.
    PS. Chyba jeszcze Ci sie to nie kompiluje a jeżeli tak to odpowiedz na https://www.elektroda.pl/rtvforum/topic2956274.html#14264468
  • REKLAMA
  • #5 14264903
    Ins0maniaC
    Poziom 17  
    Posty: 353
    Ocena: 10
    Używam Codeblocksa, standardowa wersja ze standardowym kompilatorem. Zrobiłem to po swojemu, z pętlą while i for, ale coś nie działa. Ktoś coś podpowie?

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #6 14264933
    witoldwitoldowicz
    Poziom 28  
    Posty: 698
    Pomógł: 163
    Ocena: 60
    for(int i=0;i<n;i++) zmięnił bym na
    for(licznik=0;licznik<n;licznik++)
    To tak na szybko a co dokładnie nie działa?
    PS. Popraw formatowanie wcięć bo trudno się analizuje
  • #7 14265038
    Ins0maniaC
    Poziom 17  
    Posty: 353
    Ocena: 10
    A jakie masz sugestie co do formatowania? Bo przyznam szczerze, że tak się przyzwyczaiłem, ale mogę się dostosować do ogólnie przyjętych standardów, tylko nie wiem jak takie wyglądają. A co do programu- pętla zmieniona, a dokładnie to czy odpowiedź jest T/t czy N/n to pętla nadal działa i indeksuje co 2- od 1, potem 3, 5 itd.
  • REKLAMA
  • #8 14265094
    witoldwitoldowicz
    Poziom 28  
    Posty: 698
    Pomógł: 163
    Ocena: 60
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Ins0maniaC napisał:
    A jakie masz sugestie co do formatowania?

    Petla do jest na równo z pętlą for;
  • #9 14265178
    Ins0maniaC
    Poziom 17  
    Posty: 353
    Ocena: 10
    Ok, wszystko śmiga jak powinno, ale teraz jest kolejny kłopot- wyświetlenie zawartości tej tablicy. Chcę ustawić wielkość na dosyć sporą, ale wyświetlać tylko zapełnione miejsca. Jednak nawet w tym prostszym pomyśle jest błąd, bo program pokazuje na wszystkich miejscach 0.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #10 14265222
    witoldwitoldowicz
    Poziom 28  
    Posty: 698
    Pomógł: 163
    Ocena: 60
    Radze Ci nie bawić sie z tablicami (same problemy) wykorzystaj std::vector wtedy usuwanie,przesuwanie,dodawanie jest o wiele prostsze i dodatkowo nigdy niewiesz ile zadeklarować żeby wystarczyło (szkoda pamięci).
  • #11 14265227
    Ins0maniaC
    Poziom 17  
    Posty: 353
    Ocena: 10
    Właśnie biorę się za artykuł o tym. Dzięki za pomoc. Temat do zamknięcia, program przerobię od początku (ten się przyda do innego zadania :P).

Podsumowanie tematu

✨ Użytkownik zmaga się z problemem w programie C++ do obsługi auto-komisu, który wykracza z powodu błędu SIGSEGV (segmentation fault) oraz ostrzeżenia o nieinicjalizowanej zmiennej w linii 72. Po wprowadzeniu dynamicznej tablicy samochodów i wskaźników, użytkownik poszukuje pomocy w wyświetlaniu zawartości bazy danych oraz w implementacji wyszukiwania według określonych kryteriów. W odpowiedziach zasugerowano użycie std::vector zamiast tablic, co uprości zarządzanie danymi. Użytkownik planuje przerobić program, aby lepiej spełniał jego wymagania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA