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:
#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ę