Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Im trying to create a c++ program that checks to see if a given file is balanced

ID: 3921976 • Letter: I

Question

Im trying to create a c++ program that checks to see if a given file is balanced but having some trouble my code so far is as follows:

#include <iostream>
#include <fstream>
#include <stack>
#include <string>

using namespace std;

int main()
{
ifstream infile;
char f[100];

cout << "Enter the name of the file you wish to open." << endl;
cin >> f;
infile.open(f);

//cout << f << endl;

if (infile.fail())
{
  cout << "Cannot find file." << endl;
}
else
{
  char c;
  stack <char> stack;
  int x = 0;
  while (infile >> c)
   cout << c << endl; // Delete this
  {
   if (c == '(' || c == '{' || c == '[')
   {
    stack.push(c);
   }
   if (!stack.empty() && (c == ')' || c == '}' || c == ']'))
   {
    if(stack.top() == '(' && c == ')' || stack.top() == '{' && c == '}' || stack.top() == '[' && c ==']')
    {
     stack.pop();
    }
    else
    {
     x == 1;
    }
   }
   
  }
  if (stack.empty() && x == 0)
  {
   cout << "File is balanced." << endl;
  }
  else
  {
   cout << "File is not balanced." << endl;
  }

  {
   int z = 0;
   cin >> z;
  }
}

}

Explanation / Answer

Please use following if statement insted of what written:

if( (stack.top() == '(' && c == ')' ) || (stack.top() == '{' && c == '}' ) || (stack.top() == '[' && c ==']'))

This will work.