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