[C++] Problem ze zmienną w klasie określonej w konstruktorze
Ostatnio zmodyfikowano 2015-01-03 18:39
deneb Temat założony przez niniejszego użytkownika |
[C++] Problem ze zmienną w klasie określonej w konstruktorze » 2014-12-29 16:26:43 Problem dotyczy zmiennej - ilosc_pracownikow. Po dojściu do niej program ulega wykrzaczeniu Skrawek kodu pliku cpp klasy magazyn. Program składa się z 3 klas i main. Jeśli to konieczne to również i je wstawię.
#include "stdafx.h" #include "magazyn.h"
magazyn::magazyn() { ilosc_pracownikow = 0; tab_materialow[ 0 ].wprowadz_rodzaj( "Stal" ); tab_materialow[ 1 ].wprowadz_rodzaj( "Aluminium" ); tab_materialow[ 2 ].wprowadz_rodzaj( "Miedz" ); }
magazyn::~magazyn() { } void magazyn::dodaj_pracownika( int pensja_p, char * kwalifikacje ) { pracownik * nowy_pracownik; nowy_pracownik = new pracownik; cout << "utworzenie" << endl; nowy_pracownik->wprowadz_pensje( pensja_p ); cout << "kasa" << endl; nowy_pracownik->wprowadz_kwalifikacje( kwalifikacje ); cout << "utworzenie kwalifi" << endl; nowy_pracownik->wprowadz_ID( ilosc_pracownikow + 1 ); cout << "danie id" << endl; tab_pracownikow[ ilosc_pracownikow ] = nowy_pracownik; ilosc_pracownikow++; }
|
|
michal11 |
» 2014-12-29 19:59:57 Pokaż jeszcze plik nagłówkowy. |
|
deneb Temat założony przez niniejszego użytkownika |
» 2014-12-29 20:10:55
#if !defined(AFX_MAGAZYN_H__69E27DBE_0BE4_4457_87D3_EE98827FEFED__INCLUDED_) #define AFX_MAGAZYN_H__69E27DBE_0BE4_4457_87D3_EE98827FEFED__INCLUDED_
#if _MSC_VER > 1000 #pragma once #endif #include <iostream> #include "pracownik.h" #include "material.h" using namespace std;
class magazyn { private: pracownik * tab_pracownikow[ 50 ]; material tab_materialow[ 3 ]; int ilosc_pracownikow; public: magazyn(); ~magazyn(); int l_stali, l_aluminium, l_miedz; void dodaj_pracownika( int, char * ); void dodaj_material( char, int ); void usun_pracownika( int ); void usun_material( char, int ); void edytuj_pracownika_p( int, int ); void edytuj_pracownika_k( int, char * ); void wyswietl_pracownikow( int ); void wyswietl_materialy(); void odczytaj_pracownika( int ); void odczytaj_material( int ); void wpisz_material( char, int ); int wyswietl_l_pracownikow(); };
#endif
|
|
darko202 |
» 2014-12-29 23:45:00 czy mógłbyś bardziej opisać miejsce wystąpienia problemów ? //kompilacja, uruchomienie, otrzymany komunikat błędu i zamieścić main
|
|
deneb Temat założony przez niniejszego użytkownika |
» 2014-12-30 02:18:30 Tu jest cały main. Problem pojawia się, gdy dojdzie do kontaktu z tą zmienną. Kompiluje, uruchamia i jak już ma nadać ID pracownikowi to program przestaje działać - tyle.
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <cstdlib> #include "magazyn.h"
using namespace std;
int wpisz_odp(); magazyn * tab_magazynow[ 10 ]; int licznik_magazyny = 0;
int main() { int menu_G; int menu; int wybor_Licz, wybor_Mag, wybor_Rodzaj; int pensja; const int rozmiar = 30; char d[ rozmiar ]; do { cout << "Menu glowne:" << endl << "1. Dodawanie danych " << endl << "2. Usuwanie danych " << endl << "3. Edycja danych" << endl << "4. Odczytywanie danych " << endl << "0. Wyjscie " << endl; menu_G = wpisz_odp(); system( "cls" ); switch( menu_G ) { case 1: cout << "Wprowadzanie danych:" << endl << "Jakie dane chcesz dodac ?" << endl << "1. Magazyn." << endl << "2. Pracownika." << endl << "3. Material." << endl << "4. Powrot." << endl; menu = wpisz_odp(); switch( menu ) { case 1: system( "cls" ); magazyn * nowy_magazyn; nowy_magazyn = new magazyn; licznik_magazyny++; cout << "Dodano magazyn." << endl << endl; break; case 2: system( "cls" ); cout << "Do ktorego magazynu chcesz dodac pracownika?" << endl; wybor_Mag = wpisz_odp(); cout << "Podaj pensje pracownika" << endl; pensja = wpisz_odp(); cout << "Podaj kwalifikacje" << endl; cin.clear(); cin.sync(); cin.getline( d, rozmiar ); tab_magazynow[ wybor_Mag - 1 ]->dodaj_pracownika( pensja, d ); break; case 3: system( "cls" ); cout << "Wybierz magazyn" << endl; wybor_Mag = wpisz_odp(); cout << "Jaki materialu chcesz dodac?" << endl << "1. Stal" << endl << "2. Aluminium" << endl << "3. Miedz" << endl; wybor_Rodzaj = wpisz_odp(); cout << "Ile materialu chcesz dodac?" << endl; wybor_Licz = wpisz_odp(); tab_magazynow[ wybor_Mag - 1 ]->dodaj_material( wybor_Rodzaj, wybor_Licz ); break; case 0: break; default: cout << "Nie wybrano prawidlowej opcji." << endl; break; } break; case 2: cout << "Usuwanie danych: " << endl << "Jakie dane chcesz usunac? " << endl << "1. Magazyn." << endl << "2. Pracownika." << endl << "3. Material." << endl << "4. Powrot." << endl; menu = wpisz_odp(); switch( menu ) { case 1: cout << "Podaj numer usuwanego magazynu?" << endl; wybor_Mag = wpisz_odp(); delete tab_magazynow[ wybor_Mag - 1 ]; tab_magazynow[ wybor_Mag - 1 ] = tab_magazynow[ licznik_magazyny - 1 ]; tab_magazynow[ licznik_magazyny - 1 ] = 0; licznik_magazyny--; break; case 2: cout << "Podaj numer magazynu z ktorego chcesz usunac pracownika?" << endl; wybor_Mag = wpisz_odp(); cout << "Podaj numer usuwanego pracownika" << endl; wybor_Licz = wpisz_odp(); tab_magazynow[ wybor_Mag - 1 ]->usun_pracownika( wybor_Licz - 1 ); break; case 3: cout << "Wybierz magazyn" << endl; wybor_Mag = wpisz_odp(); cout << "Jaki materialu chcesz usunac?" << endl << "1. Stal" << endl << "2. Aluminium" << endl << "3. Miedz" << endl; wybor_Rodzaj = wpisz_odp(); cout << "Ile materialu chcesz usunac?" << endl; wybor_Licz = wpisz_odp(); tab_magazynow[ wybor_Mag - 1 ]->usun_material( wybor_Rodzaj, wybor_Licz ); break; case 0: break; default: cout << "Nie wybrano prawidlowej opcji." << endl; break; } break; case 3: cout << "Edycja danych :" << endl << "Jaki obiekt chcesz edytowac? " << endl << "1. Material" << endl << "2. Pracownik" << endl << "0. Powrot" << endl; menu = wpisz_odp(); switch( menu ) { case 1: cout << "Wybierz magazyn z ktorego chcesz edytowac material" << endl; wybor_Mag = wpisz_odp(); cout << "1. Dodaj okreslona ilosc materialu" << endl << "2. Usun okreslona ilosc materialu" << endl << "3. Wpisz okreslona ilosc materialu" << endl << "4. Wyjscie" << endl; menu = wpisz_odp(); switch( menu ) { case 1: cout << "Jakiego materialu chcesz dodac?" << endl << "1. Stal" << endl << "2. Aluminium" << endl << "3. Miedz" << endl; wybor_Rodzaj = wpisz_odp(); cout << "Ile materialu chcesz dodac?" << endl; wybor_Licz = wpisz_odp(); tab_magazynow[ wybor_Mag - 1 ]->dodaj_material( wybor_Rodzaj, wybor_Licz ); case 2: cout << "Jaki material chcesz usunac?" << endl << "1. Stal" << endl << "2. Aluminium" << endl << "3. Miedz" << endl; wybor_Rodzaj = wpisz_odp(); cout << "Ile materialu chcesz usunac?" << endl; wybor_Licz = wpisz_odp(); tab_magazynow[ wybor_Mag - 1 ]->usun_material( wybor_Rodzaj, wybor_Licz ); case 3: cout << "Ilosc jakiego materialu chcesz ustawic?" << endl << "1. Stal" << endl << "2. Aluminium" << endl << "3. Miedz" << endl; wybor_Rodzaj = wpisz_odp(); cout << "Jaka ilosc chcesz ustawic?" << endl; wybor_Licz = wpisz_odp(); tab_magazynow[ wybor_Mag - 1 ]->wpisz_material( wybor_Rodzaj, wybor_Licz ); case 4: break; default: cout << "Nie wybrano prawidlowej opcji. " << endl; } break; case 2: cout << "Wybierz magazyn z ktorego chcesz edytowac pracownika" << endl; wybor_Mag = wpisz_odp(); cout << "Wybierz ID edytowanego pracownika" << endl; wybor_Licz = wpisz_odp(); cout << "Wpisz nowe kwalifikacje pracownika" << endl; cin.getline( d, rozmiar ); tab_magazynow[ wybor_Mag - 1 ]->edytuj_pracownika_k( wybor_Licz - 1, d ); cout << "Wpisz nowa pensje pracownika" << endl; pensja = wpisz_odp(); tab_magazynow[ wybor_Mag - 1 ]->edytuj_pracownika_p( wybor_Licz - 1, pensja ); break; case 0: break; } break; case 4: cout << "Odczytywanie danych :" << endl << "1. Stan materialow " << endl << "2. Kadra pracownicza magazynu" << endl; menu = wpisz_odp(); switch( menu ) { case 1: cout << "Z ktorego magazynu pokazac stan materialow?" << endl; wybor_Mag = wpisz_odp(); tab_magazynow[ wybor_Mag - 1 ]->wyswietl_materialy(); break; case 2: cout << "Z ktorego magazynu pokazac liste pracownikow?" << endl; wybor_Mag = wpisz_odp(); int lp; lp = tab_magazynow[ wybor_Mag - 1 ]->wyswietl_l_pracownikow(); tab_magazynow[ wybor_Mag - 1 ]->wyswietl_pracownikow( lp ); break; default: cout << "Nie wybrano prawidlowej opcji. " << endl; } break; case 0: cout << "Opuszenie programu." << endl; return 0; default: cout << "Nie wybrano prawidlowej opcji " << endl; break; } } while( menu_G != 0 ); return 0; }
int wpisz_odp() { int a; cin.clear(); cin.sync(); cin >> a; return a; }
|
|
DejaVu |
» 2015-01-03 18:39:00 Sprawdź co robi metoda "wprowadz_kwalifikacje" oraz "wprowadz_ID". |
|
« 1 » |