problem z funkcją - od razu kończy działanie

0

Problem jest z poniższą funkcją (a może obydwiema ?). Szukam, szukam i błędu nie mogę znaleźć. Otóż, gdy nie mam żadnych książek dodanych do vectora, to zachowuje się prawidłowo i wyświetla stosowny komunikat. Problem jest gdy wcześniej dodam ksiazke do vectora. Wtedy od razu funkcja kończy działanie.

Przykład:

Wywołuję najpierw dodajKsiazke(). Ok, mogę sobie dodawać, wszystko cacy. Wywołuję daneKsiazki(). Od razu program kończy działanie (main zwraca sobie zero).

 
int main()
{
    dodajKsiazke();
    daneKsiazki();
    return 0;
}

Funkcja dodajKsiazke(): http://pastebin.com/Q9YLLzzQ
Funkcja daneKsiazki(): http://pastebin.com/ZfM79pRZ

0

To windowsy zamykają zakończony program, rozwiązań jest kilka:

  1. odpalać z konsoli.
  2. Dodawanie i wyświetlanie zamknąć w pętli.
  3. Przed return 0; dodać: cin.sync(); cin.get(); // wymagane <iostream>
  4. Przed return 0; dodać: fflush(stdin); getchar(); // wymagane <stdio.h>
1

Czy wyskakuje po wprowadzeniu okładki?

Nie podałeś całości więc NIE MA jak sprawdzić gdzie ci wyskakuje.

  1. cin >> tytul; zły pomysł bo tytul może się składać z kilku słów, np "Nauka programowania", polecam funkcję getline() (nie metodę cin)
  2. Nie masz żadnego sprawdzenia, czy była już taka książka czy nie.
  3. Nie masz żadnego sprawdzenia czy poprawnie wprowadzone liczby.
  4. Pytanie czy chcesz zakończyć nie jest "user friendly", kończ bez uprzedzenie jeżeli wprowadzony tytuł jest pusty.
0
_13th_Dragon napisał(a):

Czy wyskakuje po wprowadzeniu okładki?

Nie. Pierwsza funkcja, odpowiedzialna za dodawanie książki wykonuje się prawidłowo. Dopiero po dodaniu książki/-ek jest problem, bo druga funkcja się "nie chce" wykonać. Od razu przechodzi dalej (w tym przypadku program kończy działanie) tak, jakby jej tam nie było.

_13th_Dragon napisał(a):

Nie podałeś całości więc NIE MA jak sprawdzić gdzie ci wyskakuje.

Mogę podać, tylko całość jest dość spora (rok akademicki się kończy, piszemy program wg dziwnych wymagań pana mgra :)).

0

Eh, kilka godzin nad tym spędziłem. Okazało się, że nie zainicjalizowałem zmiennej typu bool na początku drugiej funkcji. Nie wiem jak mogłem tego nie zauważyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1