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

problem z programem na obiektach

Ostatnio zmodyfikowano 2010-02-24 20:37
Autor Wiadomość
Weteran
Temat założony przez niniejszego użytkownika
problem z programem na obiektach
» 2010-02-24 13:08:50
Witam, mam problem z takim o to zadaniem:

"Stwórz klasę WINDA symulującą prace windy w 5-kondygnacyjnym budynku (parter i 4 piętra). Winda, jadąc do góry zatrzymuje się na piętrach, dla których naciśnięto przyciski w kabinie. Jadąc na dół winda zatrzymuje się na piętrach, dla których naciśnięto przyciski w kabinie oraz przyciski wezwań na poszczególnych piętrach.

Klasa powinna zawierać metody:
Przycisk_kabina (int numer) – obsługa naciśnięcia przycisku 0-4 w kabinie
Przycisk_wezwanie (int numer) – obsługa naciśnięcia wezwania na piętrze 0-4
Konstruktor domyślny (bezparametrowy)- ustawia windę na parterze
Konstruktor z parametrem- ustawia windę na określonym piętrze
Jedz(int piętro)- jazda bezpośrednio na określone piętro – funkcja wypisuje komunikat „Jazda na piętro x”
Otworz_drzwi(), zamknij_drzwi() – otwarcie i zamkniecie drzwi – funkcje wypisują odpowiedni komunikat
czekaj(int piętro)- oczekiwanie przed dalszymi czynnościami (np. zamknięcie drzwi) – funkcja wypisuje odpowiedni komunikat
sprawdź() – sprawdza, które przyciski zostały naciśnięte, czy w kabinie czy wezwanie na Pietrze i wysyła windę na odpowiednie piętro, realizuje cała jazde windy z otwieranie i zamykaniem drzwi, czekaniem"

Jak narazie udało mi się napisac coś takiego:
C/C++
#include "stdafx.h"
#include <iostream>
using namespace std;

class winda
{
public:
    int pietro, numer;
    int tablica[ 5 ];
   
    winda()
    {
        pietro = 0;
    }
   
    winda( int numer )
    {
        pietro = numer;
    }
   
    void przycisk_kabina( int numer )
    {
        tablica[ numer ] = 1;
        this->numer = numer;
    }
   
    void przycisk_wezwanie( int numer )
    {
        tablica[ numer ] = 1;
    }
   
    void jedz( int pietro )
    {
        cout << " Jade na pietro " << pietro << "\n";
        this->pietro = pietro;
    }
   
    void otworz_drzwi()
    {
        cout << "otwieram drzwi" << endl;
    }
   
    void zamknij_drzwi()
    {
        cout << "zamykam drzwi" << endl;
    }
   
    void czekaj( int sekundy )
    {
    }
   
    void sprawdz()
    {
        for( int i = 0; i <= 4; i++ )
        {
            if( tablica[ i ] == 1 )
            {
                if( pietro == i )
                {
                    cout << "Jestes juz na tym pietrze\n";
                }
                else
                {
                    jedz( i );
                    otworz_drzwi();
                    czekaj( 5 );
                    zamknij_drzwi();
                }
            }
        }
        zeruj();
    }
   
    void zeruj()
    {
        for( int i = 0; i <= 4; i++ )
             tablica[ i ] = 0;
       
    }
};

int _tmain( int argc, _TCHAR * argv[] )
{
    winda w( 4 );
    w.przycisk_kabina( 2 );
    w.przycisk_kabina( 4 );
    w.przycisk_wezwanie( 3 );
    w.przycisk_kabina( 1 );
    w.sprawdz();
   
   
    system( "pause" );
    return 0;
}
Niestety nie działa tak jak powinno, bo nie ma bezpośredniej jazdy na określone piętro. Nie wiem w czym problem, dlatego prosiłbym o jakąkolwiek pomoc. Z góry dziękuję
P-14108
karwan
» 2010-02-24 20:37:59
Najpierw przypisujesz a potem sprawdzasz,dlatego wychodzi Ci po kolei,przypisz i od razu sprawdzaj.Usuń funkcje sprawdzania na końcu i dodaj ją na końcu do przycisk_kabina() przycisk_wezwanie() tylko nie wiem czy o to chodziło
P-14144
« 1 »
  Strona 1 z 1