473,397 Members | 2,084 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,397 software developers and data experts.

The elevator simulation

Hi all...
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
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;
}

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) {}

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;
}

Oct 15 '07 #1
6 8742
wh*************@gmail.com wrote:
Hi all...
Im getting some errors, and have no clue, as to what could be wrong...

SOS... anybody ??
heres the code:

[..]
//error, type qualifier 'elevator' must be a struct or clas name
// error declaration terminated incorrectly
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;
}

elevator::~elevator()
{
for(int i = number; i >= 0; --i)
delete button_array[i];
delete [] button_array;
}
What are those two "functions" supposed to be for? If they are
definitions of the member functions of the 'elevator' class, they are
processed by the compiler before the class. If they are not members,
what are they? Also, you seem to have two different versions of the
'elevator' destructor in your code. You need to pick one (and remove
the other).
>

class elevator
{
[..]
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
Oct 15 '07 #2
On 2007-10-15 19:56, wh*************@gmail.com wrote:
Hi all...
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
Actually you have a lot more errors than that, for some of them I can
not even guess what the correct solution should be.
#include "include.h"
What is include.h? We have not seen this file so if it is necessary for
your program to work you should post it too. If it is not necessary you
should not include it.
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
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;
}
This is a fun one, it is a function named b, which takes an int as an
argument. Since it has an initialisation-list it should be a constructor
but since it have a return-type it is not. The return-type is a pointer
to an object of type elevator::button, where elevator is a class, struct
or a namespace?

To be frank I have absolutely no idea what that function is supposed to
be, I can not find anything like it in the elevator class declared
below, or in the button class above.

elevator::~elevator()
{
for(int i = number; i >= 0; --i)
delete button_array[i];
delete [] button_array;
}
Move this below the class definition. BTW: there is no member named
either number or button_array in the elevator class.
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
What is the difference between the above three functions?
void press(int);
void reset(int n); returns off state
You forgot to add // at the beginning of the comment.
void close_doors();
How do you open the doors? And how do you know if they are open or closed?
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) {}

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();
}
That is twice that you have defined elevator::press().
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;
}
Somehow I just do not believe that the code above is the one you are
trying to compile. Please read the FAQ on how to ask questions and try
again: http://www.parashift.com/c++-faq-lit...t.html#faq-5.8

If the above code really is the code you are trying to compile then do this:
1. Remove all code except the code for the button class.
2. Write the definition for the elevator class, considering carefully
what information you need to store and which functions you need.
3. Compile.
4. Fix any compilation errors.
5. Implement the elevator's constructor.
6. Compile.
7. Fix any compilation errors.
8. Implement one of the elevator's functions.
7. Compile.
8. Fix any compilation errors.
9. If all functions are implemented go to 10, else go to 8.
10. Write main().
11. Compile.
12. Fix any compilation errors.

--
Erik Wikström
Oct 15 '07 #3
Erik Wikström wrote:
Somehow I just do not believe that the code above is the one you are
trying to compile. Please read the FAQ on how to ask questions and try
again: http://www.parashift.com/c++-faq-lit...t.html#faq-5.8

If the above code really is the code you are trying to compile then do this:
1. Remove all code except the code for the button class.
2. Write the definition for the elevator class, considering carefully
what information you need to store and which functions you need.
3. Compile.
4. Fix any compilation errors.
5. Implement the elevator's constructor.
6. Compile.
7. Fix any compilation errors.
8. Implement one of the elevator's functions.
7. Compile.
8. Fix any compilation errors.
9. If all functions are implemented go to 10, else go to 8.
10. Write main().
11. Compile.
12. Fix any compilation errors.
That's one hell of a numbering system ;)

--
SM
rot13 for email
Oct 15 '07 #4
On 2007-10-15 21:19, Shadowman wrote:
Erik Wikström wrote:
>Somehow I just do not believe that the code above is the one you are
trying to compile. Please read the FAQ on how to ask questions and try
again: http://www.parashift.com/c++-faq-lit...t.html#faq-5.8

If the above code really is the code you are trying to compile then do this:
1. Remove all code except the code for the button class.
2. Write the definition for the elevator class, considering carefully
what information you need to store and which functions you need.
3. Compile.
4. Fix any compilation errors.
5. Implement the elevator's constructor.
6. Compile.
7. Fix any compilation errors.
8. Implement one of the elevator's functions.
7. Compile.
8. Fix any compilation errors.
9. If all functions are implemented go to 10, else go to 8.
10. Write main().
11. Compile.
12. Fix any compilation errors.

That's one hell of a numbering system ;)
I think I ate to much copy-pasta for supper. At least this way the OP
has an option of which 8 to go to. :-)

--
Erik Wikström
Oct 15 '07 #5
<wh*************@gmail.comwrote:

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.
Oct 15 '07 #6
You have written too much code without doing any testing. Please pay
attention.- Hide quoted text -
WOOW, soo many errors!! :)
Ill go through them in detail and get to you all, thank you!

PS. "include.h" is a header file in which i have include all regular h
files, iostream, string, dos ....

Oct 16 '07 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Steaming Balturd | last post by:
are there any php based economic simulations out there - not trading games per se, but more like simulating an economy, be it running a business or running a government? All i've been able to...
0
by: Constandinos Mavromoustakis | last post by:
Dear all, first we apologize if you receive multiple copies of this announcement. please see below if you are interested. Thank you in advance....
0
by: Constandinos Mavromoustakis | last post by:
http://agent.csd.auth.gr/~cmavrom -------------------------------------------------- ============================================================================ = 37th Annual Simulation...
0
by: Gus | last post by:
---------------------------------------------------------------------------- ------------------------------------ Call for Papers: 38th Annual Simulation Symposium Part of the 2005 Spring...
19
by: Nicolas Pernetty | last post by:
Hello, I'm looking for any work/paper/ressource about continuous system simulation using Python or any similar object oriented languages (or even UML theory !). I'm aware of SimPy for...
0
by: Karatza Helen | last post by:
Our apologies if you have received multiple copies -------------------------------------------------- Call for Papers: 38th Annual Simulation Symposium Part of the 2005 Spring Simulation...
1
by: Tim Silva | last post by:
SDX Modeling, Simulation and Numerical Computing Environment for science and engineering has now been released. Major features include: * A unified simulation environment for modeling virtually...
4
by: Richard Blackwood | last post by:
Hello all. I have a few questions about simulation programming. One, do all programmers know to how to code a simulation? By simulation I mean a model of real world relationships (i.e. like...
12
by: whitehatmiracle | last post by:
Hello group I got the code of this classic elevator simulation. Im having some problem foloowing it. And i feel it can be simplified... can u people help me? here's the code: class button {...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.