آژانس هواپیمایی
pop up

اشکال در برنامه گرافیکی(فوری تا فردا)

شروع موضوع توسط nafar_2konkor ‏27 آپریل 2008 در انجمن خانواده C++ , C

  1. nafar_2konkor

    nafar_2konkor Registered User

    تاریخ عضویت:
    ‏31 آگوست 2007
    نوشته ها:
    94
    تشکر شده:
    1
    سلام
    این برنامه با استفاده از کلاس و پشته تعدادی پرانتز باز و بسته را میگیرد اگر پرانتز باز بود سبز کنه و سبز شدنش را نشان دهد .اگر بسته بود با پرانتز باز روی پشته پاکش کنه و بوق بزنه .پوش وپاپ کردن و تعداد پرانتز های روی پشته را هر بار نشان دهد.
    اشکالش این برنامه اینه که سبز بودنش رو نشون نمیده و شکل پشته را روی هم نشان نمیدهد بلکه هر دفعه یک شکل را در صفحه جدید میکشد.
    لطفا اگه کسی متونه اشکالش رو رفع کنه ممنون میشم .(تا فردا)
    راستی این برنامه باید تحت داس انجام بشه.
    کد:
    #include<iostream.h>
    #include<conio.h>
    #include<graphics.h>
    #include<stdio.h>
    #include<string.h>
    int j,i;
    class stack{
    private:
    int top,l;
    char *s;
    public:
    stack();
    stack(int size);
    int isempty();
    void push(char ch);
    char pop();
    };
    
    //***********************************//
    stack::stack()
    {l=50;
     top=-1;
     s=new char[l];
     }
     //***********************************//
    stack::stack(int size)
    {l=size;
     top=-1;
     s=new char[l];
     }
     //***********************************//
     int stack::isempty()
     {if(top==-1)
     return 1;
     else
     return 0;
     }
     //***********************************//
     void stack::push(char ch)
     {s[++top]=ch;}
     //**********************************//
     char stack::pop()
     {return s[top--];}
     //*********************************//
     void clean(int j)//clean the rectangular
     {int driver=DETECT,mode=0;
     initgraph(&driver,&mode,\"c:\\\\tc\\\\bgi\");
     setcolor(BLACK);
     outtextxy(210,410-j,\"(\");
     j=j-20;
    }
    //***********************************//
    void image(int j)
    
     {int driver=DETECT,mode=0;
     initgraph(&driver,&mode,\"c:\\\\tc\\\\bgi\");
     setcolor(WHITE);
    rectangle(200,400+j,220,420+j);
     outtextxy(210,410+j,\"(\");
    
    }
     //********************************//
     void main(void)
     {int n,o=0,c=0;
     stack p;
     char st[100];
     cout<<\"enter your parranteses:\";
     cin.get(st,10);
     n=strlen(st);
     for(i=0;i<n;i++)
      { textcolor(GREEN);
      cout<<\"you entered: \"<<st[i];
      getch();
     if(st[i]==\')\')
    	{
    	if(!p.isempty())
    		{ p.pop();
    		 cout<<\"\\a\";
    		 clean(j);
    		 }
    		o++;
    	  }//end of if
      else if(st[i]==\'(\')
      {p.push(st[i]);
    	j=j+20;
    	image(j);
    	c++;
    	}
      }
    	//if(p.isempty())
    	//cout<<\"the parranteses are balenced.\"<<endl;
    	//else
    	//cout<<\"are not balenced\";
    	//getch();
    
           if(o==c)
    	cout<<\"the parranteses are balenced.\"<<endl;
    	else
    	cout<<\"are not balenced\";
    	getch();
    
           }