So far is what I've got:

``````#include<fstream>
#include<iomanip>
#include<string>
#include<iostream>
#include<cmath>

using namespace std;

int main()
{
float matric = 47.60;//matriculation fee
int hrz;//semester hours
float regroom = 387.29;//rate for regular room
float acroom = 496.49;//rate for AC room
float dip = 38.00;//diploma fee
float food = 619.66;//rate for food
int stunum;//student ID #
float credit = 239.33;//cost of each semester hour
char R;//regular room
char A;//AC room
char Y;//Yes
char N;//No

cin>>stunum;
cout<<stunum<<endl;

cout<<"What are the number of semester hours?"<<endl;
cin>>hrz;
if (hrz>21)
cout<<"You are exceeding 21 semester hours"<<endl;
else if(hrz<12)
cout<<"You are taking less than 12 semester hours"<<endl;
float totalfeez = credit * hrz;//total fee for individual student
cout<<totalfeez<<endl;

cout<<food<<endl;
cout<<matric<<endl;
cout<<dip<<endl;
return 0;
}``````

The assignment:
A local university charges 239.33 for each semester hour of credit., 387.29 per semester for a regular room, 496.49 for an air-conditioned room and 619.66 per semester for food. All students are charged a 47.60 matriculation fee. Graduating students must pay a diploma fee of 38.00.

Write a C++ program that will compute the fees that must be paid by a student. Input from the keyboard will be as follows:

Student # (a four digit #)
Number of semester hours
Room choice('R' for regular, 'A' for air-conditioned)
Graduating ('Y' for yes, 'N' for no)

After all input is typed in, then clear the screen. Output will be as follows:

Student #
A warning message if the student is taking more than 21 hours or less than 12.
Tuition amount
Room: Air conditioned or regular
Food
Matriculation fee

All help is appreciated....I've having a hard time visualizing how I'd have the options (i.e. Y, N, R, A) being interactive and thus using it to accurately get the student's costs.

Have a good day.

## All 25 Replies

Plan it out first using a flow chart.
Use doubles instead of floats and don't forget to put brace around your if statements. Although sometimes they're not needed for you it would be beneficial.

``````#include<fstream>
#include<iomanip>
#include<string>
#include<iostream>
#include<cmath>

using namespace std;

int main()
{
float matric = 47.60;//matriculation fee
int hrz;//semester hours
string room;//room option
float regroom = 387.29;//rate for regular room
float acroom = 496.49;//rate for AC room
float dip = 38.00;//diploma fee
float food = 619.66;//rate for food
int stunum;//student ID #
float credit = 239.33;//cost of each semester hour
char R;//regular room
char A;//AC room
char Y;//Yes
char N;//No

cin>>stunum;

cout<<"What are the number of semester hours?"<<endl;
cin>>hrz;
if (hrz>21)
cout<<"You are exceeding 21 semester hours"<<endl;
else if(hrz<12)
cout<<"You are taking less than 12 semester hours"<<endl;

cin>>room;
while (room == 'R')
cout<<"Regular : "<<regroom<<endl;
else if (room == 'A')
cout<<"Air-Conditioned : "<<acroom<<endl;

cout<<"Diploma fee : "<<dip<<endl;

cout<<stunum<<endl;
float totalfeez = credit * hrz;//total fee for individual student
cout<<totalfeez<<endl;
cout<<"Food : "<<food<<endl;
cout<<"Matriculation : "<<matric<<endl;

return 0;
}``````

This is what I kinna thought about..although it doesn't work...but that's kinna my idea as to how it would work....any help would be appreciated.

Surround your if else statement with braces and you probably wanna use double instead of floats.

ok thanks...but my program won't compile...you you like for me to post the errors that i got from the compiler?

ok thanks...but my program won't compile...you you like for me to post the errors that i got from the compiler?

Add some braces around the if else while statements. Stick a few couts here and there to see what's going on. Pay attention to your type declarations, strings and chars, etc missing semi-colons, the list could go on...

I'll toss a few more concerns in to the mix in adddition to those already pointed out by iamthwee.

room and grad are declared as string variables but you are trying to compare them to a literal characters when doing things like room == 'R'. Change the declaration of room and grad to type char, not type string and erase the variables called R, A, Y, N as they are just getting you confused.

Also, when you change the declaration of room and grad to type char, then the while loop which matches the user input will go into an infinite loop because there is no way to change the value of room or grad within the while loop. Instead of a while loop, just use an if statement.

Once you get those all working you can add some while loops to help with input validation, control the flow of your program as desired, etc, but until you get the basics down, I wouldn't bother with the while loop stuff.

ok....thx Lerner.....big help...i'll make the necessary changes and repost my new code in a few.Ok guys....thx alot..i got it to work...really appreciate all the assistance..have a good weekend.

My final problem....It compiles ok.....However, for the total cost, i don't see what's not working...I tried the following input: 22 semester hours, air-conditioned room, graduating. The total should be 6467.01 with the matricualtion fee and diploma fee (in this case the student is gaduating)....When i run the program..my total is 6035...My code below:

``````#include<fstream>
#include<iomanip>
#include<string>
#include<iostream>
#include<cmath>

using namespace std;

int main()
{
double matric = 47.60;//matriculation fee
int hrz;//semester hours
char room;//room option
double regroom = 387.29;//rate for regular room
double acroom = 496.49;//rate for AC room
double dip = 38.00;//diploma fee
double food = 619.66;//rate for food
int stunum;//student ID #
double credit = 239.33;//cost of each semester hour

cin>>stunum;

cout<<"What are the number of semester hours?"<<endl;
cin>>hrz;

cin>>room;

cout<<stunum<<endl;
if (hrz>21)
{
cout<<"You are exceeding 21 semester hours"<<endl;
}
else if(hrz<12)
cout<<"You are taking less than 12 semester hours"<<endl;

double totalfeez = credit * hrz;//total fee for individual student
cout<<"Tuition: "<<totalfeez<<endl;

{
if (room == 'R')
cout<<"Room Type : Regular : "<<regroom<<endl;
else if (room == 'A')
cout<<"Room Type : Air-Conditioned : "<<acroom<<endl;
}
cout<<"Food : "<<food<<endl;
cout<<"Matriculation : "<<matric<<endl;
{
cout<<"Diploma fee : "<<dip<<endl;
}
double totalcost = totalfeez + dip + matric + room + food;
cout<<"Total Fees : "<<totalcost<<endl;
return 0;
}``````

Put a few couts in strategic places to find out where it is going wrong.

ok....so i placed a 'cout' at the end of the statement....so it prints out the room (i.e. A or R) instead of the actual dollar amout...i'll figure it out...thx much.

Actually the couts won't help, something else is wrong.

Hint: where are you actually assigning the values for the choice entered?

double regroom = 387.29;
double acroom = 496.49;

, i'm going to have to refer to those values again in the loops?

Yes what I am saying is here:

``````{
if (room == 'R')
cout<<"Room Type : Regular : "<<regroom<<endl;
else if (room == 'A')
cout<<"Room Type : Air-Conditioned : "<<acroom<<endl;
}
``````

How does it know that room is now equal to acroom?

Where have you said room = acroom in your code?

ok...thx much..i see it...i had thought that when the user enters (A) which stands for acroom(air-conditioned room) it would automatically put the value of acroom in room adn thus carry out the calculation.

There is no such thing as automatically in programming, computers can't read your mind.

ok..got it now....really appreciate it..it's working perfect now...have another assignment to post on wednesday...c u then...

i guess the same would apply for the room option doesn't work....if i choose 'R' for room option...it prints out the letter...rather than the cost (but it does the calculation ok)...

it works for air-conditioned room....but not for regular room

``````#include<fstream>
#include<iomanip>
#include<string>
#include<iostream>
#include<cmath>

using namespace std;

int main()
{
double matric = 47.60;//matriculation fee
int hrz;//semester hours
char room;//room option
double regroom = 387.29;//rate for regular room
double acroom = 496.49;//rate for AC room
double dip = 38.00;//diploma fee
double food = 619.66;//rate for food
int stunum;//student ID #
double credit = 239.33;//cost of each semester hour
double totalcost;//student's total cost per semester

cin>>stunum;

cout<<"What are the number of semester hours?"<<endl;
cin>>hrz;

cin>>room;

cout<<stunum<<endl;
if (hrz>21)
{
cout<<"You are exceeding 21 semester hours"<<endl;
}
else if(hrz<12)
cout<<"You are taking less than 12 semester hours"<<endl;

double totalfeez = credit * hrz;//total fee for individual student
cout<<"Tuition: "<<totalfeez<<endl;

{
if (room == 'R')
cout<<"Room Type : Regular : "<<regroom<<endl;
else if (room == 'A')
cout<<"Room Type : Air-Conditioned : "<<acroom<<endl;
}
cout<<"Food : "<<food<<endl;
cout<<showpoint<<setprecision(4)<<"Matriculation : "<<matric<<endl;
{
cout<<"Diploma fee : "<<dip<<endl;
cout<<endl;
}
{
if (room = acroom)
totalcost = totalfeez + dip + matric + acroom + food;
else if (room = regroom)
totalcost = totalfeez + dip + matric + regroom + food;
}
cout<<setprecision(6)<<"Total Fees : "<<totalcost<<endl;

return 0;
}``````

A few problems: if i select 'N' for the graduation option...it still includes 'dip' into the total fees...The option, when I select 'R' for regular room...it doesn't 'cout' after it's compiled.

All of the {}s done like this:

``````{
if (room == 'R')
cout<<"Room Type :
else if (room == 'A')
cout<<"Room Type :
}``````

are worthless. They don't do anything. It should be like this

``````if (room == 'R')
{
cout<<"Room Type :
}
else if (room == 'A')
{
cout<<"Room Type : Air-
}``````

or some other {} style, so that each set of {}s is enclosing a block of statements after each if and each else if, etc. You should also be indenting the block of statements within the {}s so it's easier to tell if you mismatch them.

When you calculate totalcost you always add dip to it. You have to do something to avoid hardwiring the value of dip into totalcost. Options I see off hand are to:
1) use an conditional statement to determine if you need to add dip to totalcost or not, or
2) make totalcost a running total (easy to do if you know about the += operator)

I did change the braces for the room options....still didn't work.....it didn't 'cout' the option for air-conditioned room....

rather....it didn't work when i chose regular room

Ok guys...nice job...thx 4 all the help....i figured it out....

Ok guys...nice job...thx 4 all the help....i figured it out....

Please can you post your 'finished' solution for the benefit of the daniweb community and so that others can check over it.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.