این برنامه هم یکی از تمریین های کتاب آقای جعفر نژاد قمی هست (ساختمان داده ها در c++ )

که یه جمله infix  رو میگیره بعد تعداد پرانتز ها رو چک میکنه و در صورت اشتباه بودن به کاربر اعلام میکنه .

 #include<iostream.h>
#include<conio.h>
#define M 21
class stack
{
public:
   stack();
   void push(char);
   char pop();
   int empty();
   void popandtest(char & , int &);
   void topandtest(char & , int &);
   void pushandtest(char & , int &);
private:
   int mytop;
   char items[M];
};
///////////////////////////////////////////
stack::stack()
{
 mytop=-1;
}
/////////////////////////////////////////////
void stack::push(char x)
{
 items[++mytop]=x;
}
///////////////////////////////////////////
char stack::pop()
{
 return items[mytop--];
}
///////////////////////////////
int stack::empty()
{
 return (mytop==-1);
}
/////////////////////////////////////
void stack::pushandtest(char &x, int &overflow)
{
 if(mytop==M-1)
  overflow=1;
 else
 {
  overflow=0;
  items[++mytop]=x;
 }
}

void stack::popandtest(char &x , int &underflow)
{
 if(empty())
  underflow=1;
 else
 {
  x=items[mytop--];
  underflow=0;
 }
}
//////////////////////////////////////////
void stack::topandtest(char &x , int &underflow)
{
 if(empty())
  underflow=1;
 else
 {
  x=items[mytop];
  underflow=0;
 }
}
//int isoperand(char);
void convert(char[]);
//int pred(char,char);
int main()
{
 char infix[M],postfix[M];
 clrscr();
 cout<<"enter a infix expersion:";
 cin.get(infix , M);
 convert(infix);
  // cout<<"postfix expersion is :";
 // for(int i =0 ; postfix[i];i++)
 //  cout<<postfix[i];

  getch();
  return 0;

}
void convert(char infix[])
{
int a=0;
 char symbol, topsymbol;
 int underflow , j=1;
 int overflow;
 stack s;
 for(int i=0;infix[i];i++)
 {
  symbol=infix[i];
  if(symbol=='(')
    s.pushandtest(symbol ,overflow );
   else  if(symbol==')')
   {
    s.popandtest(symbol,underflow);

     if(underflow)
      {
         j=0;
         break;
       }
    }
 }
if(underflow)
 cout<<"no please cheak";
 if (!s.empty())
   cout<<"no please cheak";
   if(j!=0 && s.empty())
   cout<<"it is ok";

 

   }

در صورت به هم ریختگی کد ها اون رو توی note pd کپی کنید بعد ببریدش تو محیط برنامه نویسی

 

نوشته شده در تاریخ یکشنبه 19 اردیبهشت 1389    | توسط: علیرضا حقده    | طبقه بندی: برنامه های زبان c++ , برنامه های به زبان c،     | نظرات()