|
Alright, thank you ahead of time.
First off here is what the program is supposed to do, what i am having trouble with is in bold..
"Write a program that will accept as input a one character desinator (C,T,S) followed by the number of minutes a vehicle has been in the lot. THe program should then compute the appropriate charge and print a ticket for the custormer. Any part of an hour is to be counted as a full hour. At a later time the program should be modified to loop until the character "x" is entered for input. Use functions as needed! "
Alright this is my problem, the program displays correctly and executes and all that , BUT I just don't know how to do the loop... i think it has to be a while loop ...
I know what it should say in english, I think ...
It should keep asking for C,T, S and the number of minutes..infinitely until I input an "X"..but I dont know how to translate that into code.. here is where I "think" it has to go, but my full program is under it..
Enter car type...C T or S...or press x to exit program..(not exactly say that...) but if you enter c t or s , it will then ask for miles which it does, then it calculates them. But when its done, I want it to keep asking for a new type of car., Then miles...and then calculate all the same stuff all over again Then when I've decided i want to end the program after trying,( say all the different types of cars and different minute variations,
..i would simple type in x, and then enter, and it would end the loop and the program will close.
Hope that helps
void getInput() <br />
{ <br />
<br />
char vType;<br />
<br />
cout << "Enter the type of car"; <br />
cout << endl; <br />
cout << "(e.g. 'C' for car, 'T' for truck, or 'S' for senior citizen: "; <br />
cout << endl; <br />
cout << "Press X to exit program : ";<br />
cin >> vType; <br />
cout << endl; <br />
if (tolower(vType) == 'x') <br />
{ <br />
return; <br />
} <br />
cout <<"Enter the number of minutes the vehicle has been parked: "; <br />
cin >> mtime; <br />
<br />
computePrice(vType,mtime); <br />
} <br />
int main() <br />
{ <br />
getInput(); <br />
<br />
cin.ignore(); <br />
cin.get(); <br />
<br />
return 0; <br />
}
and heres the full beautiful thing...
<br />
#include <iostream> <br />
#include <fstream> <br />
#include <string> <br />
<br />
using namespace std; <br />
<br />
int mtime; <br />
<br />
void printTicket(char vType, int minutes, double p, int hours) <br />
{ <br />
<br />
<br />
string carType; <br />
if(vType == 'c'){ <br />
carType = "Car"; <br />
} <br />
else if(vType == 't'){ <br />
carType = "Truck"; <br />
} <br />
else if(vType == 's'){ <br />
carType = "Senior"; <br />
} <br />
cout<<" PENTAGON VISITOR PARKING" << endl; <br />
cout<<" Type ..... " << carType << endl; <br />
cout<<" Minutes .. " << minutes<< endl; <br />
cout<<" Hours .... " << hours << endl; <br />
cout<<" Charge ... " << p << endl; <br />
} <br />
<br />
<br />
void computePrice(char vType, int time) <br />
{ <br />
vType = tolower(vType); <br />
<br />
double p = 0.0; <br />
double h = time/60;<br />
if(time%60 > 0.0) <br />
h++ ; <br />
if(vType == 'c'){ <br />
if(time <= 120){ <br />
p = 0.00; <br />
} <br />
else if(time > 120 && time <= 300){ <br />
p = .50*(h-2.00); <br />
} <br />
else if(time >300){ <br />
p = .25*(h-5)+1.5; <br />
} <br />
} <br />
else if(vType == 't'){ <br />
if(time <= 60){ <br />
p = 0.00; <br />
} <br />
else if(time > 60 && time <=180){ <br />
p = 1.00*(h-1.00); <br />
} <br />
else if(time > 180){ <br />
p = .75*(h-3)+2.00; <br />
} <br />
} <br />
else if(vType == 's') <br />
p = 0.00; <br />
<br />
printTicket(vType,time,p,h); <br />
} <br />
<br />
<br />
void getInput() <br />
{ <br />
<br />
char vType;<br />
<br />
<br />
cout << "Enter the type of car"; <br />
cout << endl; <br />
cout << "(e.g. 'C' for car, 'T' for truck, or 'S' for senior citizen: "; <br />
cout << endl; <br />
cout << "Press X to exit program : ";<br />
cin >> vType; <br />
cout << endl; <br />
if (tolower(vType) == 'x') <br />
{ <br />
return; <br />
} <br />
cout <<"Enter the number of minutes the vehicle has been parked: "; <br />
cin >> mtime; <br />
<br />
computePrice(vType,mtime); <br />
} <br />
int main() <br />
{ <br />
<br />
getInput(); <br />
<br />
cin.ignore(); <br />
cin.get(); <br />
<br />
return 0; <br />
}
thanks again!
|
|
|
|
|
Try this:
Change getInput() to return a value - 0 to quit, 1 to continue -
int getInput() <br />
{ <br />
char vType;<br />
<br />
cout << "Enter the type of car"; <br />
cout << endl; <br />
cout << "(e.g. 'C' for car, 'T' for truck, or 'S' for senior citizen: "; <br />
cout << endl; <br />
cout << "Press X to exit program : ";<br />
cin >> vType; <br />
cout << endl; <br />
if (tolower(vType) == 'x') <br />
{ <br />
return 0; <br />
} <br />
cout <<"Enter the number of minutes the vehicle has been parked: "; <br />
cin >> mtime; <br />
<br />
computePrice(vType,mtime);<br />
return 1; <br />
}
And change main() -
int main() <br />
{ <br />
int run = 1; <br />
while(run) <br />
{<br />
run = getInput(); <br />
cin.ignore(); <br />
cin.get(); <br />
}<br />
return 0; <br />
}
Crude, I know, but I'm a beginner, too.
Will Build Nuclear Missile For Food - No Target Too Small
|
|
|
|
|
quick hide, Christian is gona blast you for solving homework problems.
jk
MSN Messenger.
prakashnadar@msn.com
Tip of the day of visual C++ IDE.
"We use it before you do! Visual C++ was developed using Visual C++"
|
|
|
|
|
I don't think so... The poster has obviously made an effort to work it out, even coding and testing it enough that it works to some extent. It's just that loops are probably not going to be covered for another week or two, and the problem requires them. My only fear is that he might lambast me for making a dumb mistake in my suggested changes. I try to help, whenever I see something here that my meager skills make me think I can fix. But I'm still green enough at coding C++ to dread displaying my ignorance in public. It's a fine line I walk, being an old procedural coder trying to master a totally new language and programming model.
Will Build Nuclear Missile For Food - No Target Too Small
|
|
|
|
|
Yes sir you are rite. He has tried his best sometimes a little help is needed to complete the task.
Like the other day a novice programmer was tring hard to make a piece of code to work but it was causeing exceptions for some reason he didnt understand..
All i did I had to put a '*' before the pointer so that he works on the value that the pointer is poining to instead of the pointer and woalla the code started working.. and a good experience for him too.
MSN Messenger.
prakashnadar@msn.com
Tip of the day of visual C++ IDE.
"We use it before you do! Visual C++ was developed using Visual C++"
|
|
|
|
|
Mr.Prakash wrote:
woalla
It's spelled 'voila' for some odd reason.;P
And, like you, I enjoy helping someone who is trying. Christian, along with most of us I think, resents people who come here looking for someone else to do the homework. Those who are willing to make an effort he helps generously.
Will Build Nuclear Missile For Food - No Target Too Small
|
|
|
|
|
well my suggestion would be as follows.
int someFuntion(){
for(;;)// causes to loop infinite times, its 2 semicolons.
{
if(gets(c)=='x'){
return 0; //or break; /*breaks out of loop.*/
}
else{
keep going;
}
return 0;
}
i think the above is not a good model and is only necessary when nothing else would work. It is said that a clean program should have 1 entry point and 1 exit point. This does not follow that guideline.
the thing is there are so many things you can do with this.
such as
while(done!=1){
cin>>command;
if(command!='x')
{
done=0;
}
else
do more;
}
Also here is your problem. When you cin you recieve a string once you press the enter button. When you use the function toLower() in the ctype library you are comparing 1 char value. i think this would cause a segmentation fault(exception) if the user types XX by mistake. if you wish for 1 char then i think it would be appropriate to use something like getchar() or getch() not sure what the proper name is but use that instead. When you use C++ don't forget that C is a big part of the C++ language. It was necessary for C++ to be a superset of C simply because of simplification.
http://www-ccs.ucsd.edu/c/
|
|
|
|
|
disregard the cin string part, late night cuz early blindness. sorry if i got you worried, but i got myself worried.
|
|
|
|
|
cin>>command;
while(done!=1)
{
if(command=='x')
done =1;
else
do more;
}
or
for(;;)//infinite loop
{
if(command=='x')
break;//break out of loop
else
get more info;
}
here is a good reference
Standard C
http://www-ccs.ucsd.edu/c/
|
|
|
|
|
It would be nice if you could write something like,
<br />
bool GetInput ()<br />
{<br />
...<br />
}<br />
<br />
while ( GetInput ())<br />
{<br />
ComputePrice () ;<br />
PrintTicket () ;<br />
}
So 'GetInput' becomes a function returning a bool, and returns true for good input which you should continue to process and false for exit. I'll leave all the details out.
Hope that makes some sense.
Paul
|
|
|
|
|
I suggested int GetInput() only because I can't find any bool type in core C++.;)
Will Build Nuclear Missile For Food - No Target Too Small
|
|
|
|
|
Hi Roger.
'bool', 'true' and 'false' are all C++ keywords. By definition 'true' has the value '1' when converted to an integer and 'false' becomes 0 so most things work as expected.
I once worked on some old style C code where hidden in a header file was,
#define TRUE 0
#define FALSE 1
which explained a lot once I'd found it...
Paul
|
|
|
|
|
I knew it had to be there somewhere; I can't imagine a language that doesn't have a logical data type. But in the references I have, bool (or an equivalent) isn't listed. Oh well, my int suggestion at least conforms to the concept (though logically, from a hardware guy's POV, true=1).
Will Build Nuclear Missile For Food - No Target Too Small
|
|
|
|
|
Paul Ranson wrote:
old style C code
#include <stdio.h>
enum boolean { false, true };
typedef enum boolean bool;
bool Foo(bool val) {
return (!val);
}
int main(void)
{
if(Foo(false))
printf("False expected.\n");
else
printf("True expected.\n");
return 0;
}
Maxwell Chen
|
|
|
|
|
hi
i need to save one mfc application from another mfc application.
can anyone guide me into doing this.
thanks in advance.
|
|
|
|
|
archanagaby wrote:
can anyone guide me into doing this.
Possibly, assuming I understood your question better. What you have presented thus far (i.e., save one application from another application) does not make much sense.
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
if i have CString a="a;b;c;d;f" and i want to split it to CString array.
how can i do it on VC++ NET ?
|
|
|
|
|
If you're using MFC7, have a look at CString::Tokenize() function. Otherwise look at the api function strtok()
Or have a look at
http://www.codeproject.com/string/stdstring.asp
|
|
|
|
|
MFC4 has AfxExtractSubString, which should do a lot of what you want.
Steve S
|
|
|
|
|
|
1. How is this a question ?
2. So now Java has templates, they have an STL - what does that prove, except that the STL was a good idea ?
3. What is there to prove ? Any language that takes nothing from any prior languages will either be a disaster, or a revolution. Java is neither....
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
This goes in the lounge.
MSN Messenger.
prakashnadar@msn.com
Tip of the day of visual C++ IDE.
"We use it before you do! Visual C++ was developed using Visual C++"
|
|
|
|
|
JSTL really has nothing to do with C++ STL. It is a tag library for JSP (Java Server Pages).
BTW Java is getting generics (just like C#), not templates in version 1.5.
|
|
|
|
|
Yes, I think people saw the title and neglected to even skim over the article. Even a cursory glance would have made it quite obvious that JSTL is completely different from the C++ STL.
|
|
|
|
|
hi guys sorry for bothering u all again... I noticed that OnSize was called before OnCreate? In my OnCreate,
<br />
OnCreate function<br />
<br />
mSomething.Create(...);<br />
mSomething.ShowWindow(...);<br />
<br />
OnSize function<br />
<br />
mSomething.MoveWindow(...);<br />
and when it runs, an assertion is thrown BUT...
if i do it this way:
<br />
OnSize function<br />
<br />
if(mSomething.m_pHwnd)<br />
mSomething.MoveWindow(...);<br />
it works well... perfectly. So does this means that OnSize is fired before OnCreate? Freaky...
|
|
|
|