Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

z jakiegoś powodu program pada w tym samymy miejscu

Ostatnio zmodyfikowano 2016-03-01 09:26
Autor Wiadomość
piotrmaceluch
Temat założony przez niniejszego użytkownika
z jakiegoś powodu program pada w tym samymy miejscu
» 2016-03-01 01:14:53
Witam serdecznie.

Za każdym razem program zdycha po wykonaniu funkcji ksiazka.wypisz_dane();

::::::::::::::::::::::::::::::::::::::::::: MOJ KOD PROGRAMU ::::::::::::::::::::::::::::::::::::::::::::

C/C++
//======================= biblioteki oraz pliki naglowkowe ==================================
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
//================================== deklaracje =============================================
static int licznik = 1;

class biblioteka
{
   
public:
   
    string imie, nazwisko, tytul;
    int rok_wydania;
    int nr_wydania;
    void wczytaj_dane();
    void wypisz_dane();
   
    biblioteka()
    {
        cout << "(w tym miejscu dziala konstruktor)" << endl;
        licznik++;
    }
   
    ~biblioteka()
    {
        cout << "(w tym miejscu dziala destruktor)" << endl;
        licznik--;
    }
   
};

//==================================== main =================================================
int main()
{
    cout << "########## PROGRAM BIBLIOTECZNY #############" << endl << endl << endl;
   
    biblioteka * tablica_obiektow = new biblioteka[ licznik ];
   
    for( int i = 0; i < 1000; i++ )
    {
        biblioteka ksiazka;
        ksiazka = tablica_obiektow[ i ];
        ksiazka.wczytaj_dane();
        ksiazka.wypisz_dane();
        // tu nastepuje wysypanie programu :(
        cout << "____________ nastepna pozycja _______________" << endl << endl;
    }
   
    cout << "Ilosc stworzonych obiektow, to: " << licznik - 2;
    return 0;
}
//================================== definicje ==============================================

void biblioteka::wczytaj_dane()
{
    cout << "Obiekt nr: " << licznik - 2 << endl; //-2, bo konstruktor zostal wywolany raz:
    cout << "Podaj imie autora: "; // przy tworzeniu "biblioteka nowa"
    cin >> imie; //   i raz przy dynamicznej tablicy_obiektow
    cout << "Podaj nazwisko autora: ";
    cin >> nazwisko;
    cout << "Podaj tytul ksiazki: ";
    cin >> tytul;
    cout << "Podaj rok wydania: ";
    cin >> rok_wydania;
    cout << "Podaj nr wydania: ";
    cin >> nr_wydania;
    cout << endl;
}

void biblioteka::wypisz_dane()
{
    cout << "============ Parametry dla danego obiektu: ================" << endl;
    cout << "-Imie autora: " << imie << endl;
    cout << "-Nazwisko autora: " << nazwisko << endl;
    cout << "-Tytul ksiazki: " << tytul << endl;
    cout << "-Rok wydania: " << rok_wydania << endl;
    cout << "-Nr wydania: " << nr_wydania << endl << endl;
}




::::::::::::::::::::::::::::::::::::::::::::::::::::::::: KONSOLA :::::::::::::::::::::::::::::::::::::::::::



########## PROGRAM BIBLIOTECZNY #############


(w tym miejscu dziala konstruktor)
(w tym miejscu dziala konstruktor)
Obiekt nr: 1
Podaj imie autora: super
Podaj nazwisko autora: mega
Podaj tytul ksiazki: turbo
Podaj rok wydania: 2016
Podaj nr wydania: 666

============ Parametry dla danego obiektu: ================
-Imie autora: super
-Nazwisko autora: mega
-Tytul ksiazki: turbo
-Rok wydania: 2016
-Nr wydania: 666

____________ nastepna pozycja _______________

(w tym miejscu dziala destruktor)
(w tym miejscu dziala konstruktor)

--------------------------------
Process exited after 57.79 seconds with return value 3221225477
Aby kontynuować, naciśnij dowolny klawisz . . .


PS.
Nie wiem dlaczego, ale nie ma u mnie okna do edytowania zawartości tematu (nie mogę wkleić jako tekst C++)

[/i]
P-145436
piotrmaceluch
Temat założony przez niniejszego użytkownika
» 2016-03-01 01:22:06
Za co odpowiada to "return value" w konsoli?

Logicznie wydaje mi się, że program zwraca taką wartość ale to znaczyłoby, że albo mam jakąś nieskończoną pętlę, albo przekroczenie zakresu wartości dla jakiegoś typu, albo odwołanie do nieistniejącego elementu tablicy. Jestem dopiero początkującym "programistą".
P-145437
1aam2am1
» 2016-03-01 07:33:48
Wysypanie następuje trochę wyżej kiedy z tablica_obiektów chcesz odczytać drugi obiekt. Chociaż ta tablica ma długość jeden. Wychodzisz poza zakres.
P-145440
RazzorFlame
» 2016-03-01 09:26:38
W Twoim kodzie nie rozszerzasz tablicy tylko zwiększasz sam licznik, co nie ma żadnego wpływu na tablice.
P-145444
« 1 »
  Strona 1 z 1