Afficher un message
Vieux 15/10/2007, 21h08   #6
osmium
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: The elevator simulation

<whitehatmiracle@gmail.com> wrote:


> Im getting some errors, and have no clue, as to what could be wrong...
>
> SOS... anybody ??
> heres the code:
>
> // The elevator simulation
>
> //4 errors of 2 of same type
> //error, type qualifier 'elevator' must be a struct or clas name
> // error declaration terminated incorrectly
>
> #include "include.h"
>
> class button
> {
> enum button_status {off, on};
> button_status status;
> public:
> button(button_status = off);
> void set_state(button_status);
> button_status get_state();
>
> };
>
> inline void button::set_state(button_status n){
> status= n;
> }
>
> inline button::button_status button::get_state() {
> return status;
> }
>
> //error, type qualifier 'elevator' must be a struct or clas name
> // error declaration terminated incorrectly


Move this function to below the definiton of elevator
elevators don't yet exist. Read top to bottom, that's the way the compiler
does it.

> elevator::button *b(int n) : button_array(0), number(n)
> {
> button_array= new button*[number + 1];
> for(int i = 0; i < number + 1; ++i)
> button_array[i] = new button;
> }
>

move this function to below the definition of elevator. You are trying to
destroy something which doesn't yet exist.

> elevator::~elevator()
> {
> for(int i = number; i >= 0; --i)
> delete button_array[i];
> delete [] button_array;
> }
>
>
> class elevator
> {
> public:
> elevator(int = 1, int = 0);
> ~elevator();
> void prompt();
> private:
> button *b;
> int current_floor;
> const int top_floor;
> bool button_active(int) const;
> bool is_off (int n); // return button pressed as off
> bool is_on (int n); /// return button preesed for floor
> void press(int);
> void reset(int n); returns off state
> void close_doors();
> bool floor_is_valid(int) const; //// bool ->enum
> elevator(const elevator&);
> };
>
> // type qualifier 'elevator' must be a struct or class name
> //declaration terminated incorrectly
>
> elevator::elevator(int n, int w) : buttons(n), current_floor(1),
> top_floor(n) {


if you want your elevator to have buttons, this is probably the place to
generate them.

}
>
> elevator::~elevator()
> {
> cout << "Elevator will self destruct\n";
> }
>
> void elevator::prompt()
> {
> cout << "Key in the floor you would like to visit, from 1 to " <<
> top_floor << ", 0 to close doors, EOF to exit: ";
> int floor;
> while ( !(cin >> floor).eof())
> {
> if(floor == 0)
> {
> if(!button_active(1) && current_floor != 1)
> press(1);
> if(button_active(1))
> close_doors();
> }
> else if(floor < 1 || floor > top_floor)
> cout << "***Floor " << floor << " is not valid\n";
> else if(floor == current_floor)
> cout << "***You have reached your floor now\n";
> else
> press(floor);
> cout << "Next floor: ";
> }
> }
>
> void elevator::press(int n)
> {
> buttons.press(n);
> }
>
> void elevator::press(int n)
> {
> if(!is_valid(n))
> cout << "Wrong entry of floor!\n";
> else
> button[n]->is_on();
> }
>
>
>
> void elevator::close_doors()
> {
> cout << "Doors are closing\n";
> cout << "\a\a\a\a\a";
> // If a button is pushed on a floor higher than the current floor,
> then the elevator //always moves up.
> if(button_active(current_floor))
> cout << "Elevator accending\n";
> else
> cout << "Elevator decending\n";
> sleep(1);
> // Keep looping until floor buton is off
> while(buttons.is_off(current_floor))
> {
> if(button_active(current_floor))
> ++current_floor;
> else
> --current_floor;
> if(buttons.is_off(current_floor) && floor_is_valid(current_floor))
> {
> cout << "\tPassing floor " << current_floor << '\a' << '\n';
> sleep(1);
> }
> }
> cout << "\tNow on floor " << current_floor << "\a\a\a" << '\n';
> sleep(1);
> buttons.reset(current_floor); //reset is to put button off
> cout << "Doors are open\n";
> sleep(1);
> }
>
> bool elevator::button_active(int f) const
> {
> for(int i = f; i <= top_floor; ++i)
> if(buttons.is_on(i))
> return true;
> return false;
> }
>
> bool elevator::floor_is_valid(int q) const
> {
> return buttons.is_valid(q);
> }
>
> int main()
> {
> const int top = 9;
> elevator otis(top);
> otis.prompt();
> return 0;
> }
>


You have written too much code without doing any testing. Please pay
attention.


  Réponse avec citation
 
Page generated in 0,08160 seconds with 9 queries