I've written a pretty simple calculator program in C++ (haven't we all?), and I've worked out all the errors; it seems to run fine, except that if the answer to the problem is a large answer, the program keeps looping (which I set it up to do), but won't stop on cin's. I'm pretty new to C++, and I tried searching several times for clues as to the problem, but couldn't find anything. I know from seeing a million others get their asses ripped for posting entire programs, that you're not supposed to, but I don't know how else to explain my problem, and ask for any suggestions. So here's a good bit of my program. I don't expect you to rewrite my program, this is just practice for me anyway, but any suggestions on making my proggie shorter and more efficient would be appreciated. Thanks.

--LiKWiD

Becoming un-noobified one day at a time.

Code:`int op, rem;`

int res = 1;

double x1, x2, x3, x4;

double tmpsum = 0.1337;

double tmpsum2 = 0.1337;

double tmpsum3 = 0.1337;

char a1[2], a2[2], a3[2], problem[18];

char add[2] = "+";

char subtract[2] = "-";

char multiply[2] = "*";

char divide[2] = "/";

/* Organizes user input ('problem[18]') for processing */

void ioProb()

{

ofstream oprob("problem.dat", ios::trunc); // Outputs user input to file

oprob<<problem;

oprob.close();

ifstream iprob("problem.dat", ios::nocreate); // Inputs and organizes user input from file

iprob>>x1>>a1>>x2>>a2>>x3>>a3>>x4>>rem>>rem;

iprob.close();

}

/* Identifies and performs the math operation(s) */

void exeArith()

{

cout<<"Please enter the problem you wish solved: "<<endl<<endl

<<" ";

cin.getline(problem, 11, '\n');

ioProb();

op = strcmp(a1, add);

if (op == 0)

{

tmpsum = x1 + x2;

}

op = strcmp(a1, subtract);

if (op == 0)

{

tmpsum = x1 - x2;

}

op = strcmp(a1, multiply);

if (op == 0)

{

tmpsum = x1 * x2;

}

/* ... I cut out a lot of the IF statement here to shorten it some.. you get the point. */

op = strcmp(a3, divide);

if (op == 0)

{

tmpsum3 = tmpsum2 / x4;

}

if (tmpsum != 0.1337 && tmpsum2 != 0.1337 && tmpsum3 == 0.1337)

{

cout<<tmpsum2<<endl;

}

if (tmpsum3 != 0.1337)

{

cout<<tmpsum3<<endl;

}

}

/* Calculates new problem or quits program. */

void newProb()

{

cout<<endl<<endl

<<"Solve another problem or quit?"<<endl

<<" 1- Solve another"<<endl

<<" 2- Quit"<<endl;

cin>>res;

cin.ignore();

}

/* MAIN() */

int main()

{

cout<<"================================================"<<endl

<<"-- Welcome to LiKWiD's --"<<endl

<<"-- ARITHMETIC v1.0 - (SYNTAX SPECIFIC) --"<<endl

<<"------------------------------------------------"<<endl<<endl

<<" Syntax: x + y"<<endl

<<" x - y"<<endl

<<" x * y"<<endl

<<" x / y"<<endl

<<" x + y * z"<<endl<<endl<<endl;

while (res == 1)

{

exeArith();

newProb();

}

return 0;

}