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

[C++] Problem ze zmienną w klasie określonej w konstruktorze

Ostatnio zmodyfikowano 2015-01-03 18:39
Autor Wiadomość
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ę.
C/C++
// magazyn.cpp: implementation of the magazyn class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "magazyn.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

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 ); //Tu pojawia sie problem
    cout << "danie id" << endl;
    tab_pracownikow[ ilosc_pracownikow ] = nowy_pracownik;
    ilosc_pracownikow++;
}
P-123555
michal11
» 2014-12-29 19:59:57
Pokaż jeszcze plik nagłówkowy.
P-123597
deneb
Temat założony przez niniejszego użytkownika
» 2014-12-29 20:10:55
C/C++
// magazyn.h: interface for the magazyn class.
//
//////////////////////////////////////////////////////////////////////

#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 // _MSC_VER > 1000
#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 // !defined(AFX_MAGAZYN_H__69E27DBE_0BE4_4457_87D3_EE98827FEFED__INCLUDED_)
P-123601
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


P-123618
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.

C/C++
// PROJEKTCIK.cpp : Defines the entry point for the console application.
//
#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: //Dodawanie magazynu
                system( "cls" );
                magazyn * nowy_magazyn;
                nowy_magazyn = new magazyn;
                licznik_magazyny++;
                cout << "Dodano magazyn." << endl << endl;
                break;
            case 2: //Dodawanie pracownika
                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: //Dodawanie materialu
                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: //Usuwanie magazynu
                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: //Usuwanie pracownika
                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: //Usuwanie materialu
                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;
}
P-123623
DejaVu
» 2015-01-03 18:39:00
Sprawdź co robi metoda "wprowadz_kwalifikacje" oraz "wprowadz_ID".
P-123972
« 1 »
  Strona 1 z 1