The world’s Largest Sharp Brain Virtual Experts Marketplace Just a click Away
Levels Tought:
Elementary,Middle School,High School,College,University,PHD
| Teaching Since: | Apr 2017 |
| Last Sign in: | 327 Weeks Ago, 5 Days Ago |
| Questions Answered: | 12843 |
| Tutorials Posted: | 12834 |
MBA, Ph.D in Management
Harvard university
Feb-1997 - Aug-2003
Professor
Strayer University
Jan-2007 - Present
Below is my code, but I need help on two things:
1)  If both operands have a zero decimal fraction (i.e. the decimal value is all zeroes, such as in 1.0 or 2.000, then treat the operands as integers and perform the operations -- HOW?
2) otherwise output all floating point results to four fixed decimal places.Â
Â
int main()
{
Â
double num1, num2, total, remainder;
int line;
char sign;
ifstream inFile;
ofstream outFile;
Â
Â
//
//Input
//
inFile.open("inputPartb.txt");Â Â Â Â Â //open input file
if (!inFile)Â Â Â Â Â Â Â Â Â Â Â Â Â Â //check for failure
{
    cout <<"Problem opening input file";
    return 1;           //return with value 1 -> not successful
}
Â
outFile.open("resultsPartb.txt");Â Â Â Â //open output file
if (outFile.fail())Â Â Â Â Â Â Â Â Â Â //check for failure
{Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â //.fail() will return non-zero (true) if open failed
  cout << "Problem opening output file";
  exit (1);             //exit with value 1 -> not successful
}
  inFile >> num1 >> num2 >> sign;
  line = 0;
Â
  do
  {
    line++;
    switch (sign)
    {
      case '+':
        total = num1 + num2;
        cout << num1 << " " << sign << " " << num2 << " = " << total << endl;
        break;
      case '-':
        total = num1 - num2;
        cout << num1 << " " << sign << " " << num2 << " = " << total << endl;
        break;
      case '*':
        total = num1 * num2;
        cout << num1 << " " << sign << " " << num2 << " = " << total << endl;
        break;
      case '/':
        if (num2 == 0)
          {
            cout << num1 << " " << sign << " " << num2 << " = ERROR " << endl;
            cout << "ERROR encountered on line " << line << endl;
          }
        else
        {
          total = static_cast<int>(num1) / static_cast<int>(num2);
          remainder = static_cast<int>(num1) % static_cast<int>(num2);
          cout << num1 << " " << sign << " " << num2 << " = " << total << "R" << remainder << endl;
        }
        break;
      case '^':
        if (num1 == 0 && num2 == 0)
        {
          cout << num1 << " " << sign << " " << num2 << " = ERROR" << endl;
          cout << "ERROR encountered on line " << line << endl;
        }
        total = pow(num1, num2);
        cout << num1 << " " << sign << " " << num2 << " = " << total << endl;
        break;
      default:
        cout << num1 << " " << sign << " " << num2 << " = ILLEGAL" << endl;
        cout << "ILLEGAL operator encountered on line " << line << endl;
        break;
      }
  inFile >> num1 >> num2 >> sign;
  }
  while (!inFile.eof());
Â
  inFile.close();
  outFile.close ();
}
-----------