Montana Music | Equity Release | Credit Cards | Credit Reports | Internet Advertising
Beginner C++ help [Archive] - PCMech Forums

PDA

View Full Version : Beginner C++ help


finalcloud13
10-17-2007, 07:32 AM
#include <iostream>
#include <string>
using namespace std;

int main ()
{
int i, f, m;
string n;
double a = 2.60;
double b = 3.36;
double c = 2.79;
double t;

cout << "Initial meter reading:";
cin >> i;
cin.ignore(100000, '\n');

cout << "Final meter reading:";
cin >> f;
cin.ignore(100000, '\n');

int hcf = f - i;

cout << "Customer name:";
cin >> n;
cin.ignore(100000, '\n');

cout << "Month number (1=Jan, 2=Feb, etc.):";
cin >> m;
cin.ignore(100000, '\n');

if (m == 6 || 7 || 8 || 9 || 10)
{
if (hcf <= 46)
{
t = hcf * a;
}
else if (hcf > 46)
{
t = ((hcf - 46)*b) + 119.60;
}
}
else
{
if (hcf <= 32)
{
t = hcf * a;
}
else if (hcf > 32)
{
t = ((hcf - 32)*c) + 83.20;
}
}
cout << "---\nThe bill for " << n << " is $" << t << "\n";
}

The problem is in regards to the bolded part. I have the condition only if m is a number 6-10, but any number I input, it still uses the bold code block instead of going to the italicized else block. What am I doing wrong? And, how do I make it that in the underlined output, the number is always shown as a nonnegative number with at least one digit to the left and exactly two digits to the right of the decimal point?

Also, I'm not understanding too well why I don't get an error for using double, but I do for float. I thought float could be used for decimals too.

Please point out any mistakes in the code or anything that is not needed yet included in there. Thanks in advance.

kram 2.0
10-17-2007, 08:32 AM
Try rephrasing the top bolded conditional as such:
if (m >=6 && m <=10)
{
...

Where, of course, the "..." will be the rest of your code.

kram

blue60007
10-17-2007, 09:42 AM
Is it even valid to do m == 6 || 7 ... would think you would have to do m == 6 || m == 7. Seems counter-intuitive, but I'm not sure that's a valid boolean expression.

Can you provide a couple examples of what is being outputted for t, and what you are expecting? You are getting something like x.xx ? Might make more sense to me to see what you're expecting.

finalcloud13
10-17-2007, 04:36 PM
Thank you very much, the

if (m >=6 && m <=10)
{

fixed the problem :)