برگزیده های پرشین تولز

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

nafar_2konkor

Registered User
تاریخ عضویت
31 آگوست 2007
نوشته‌ها
95
لایک‌ها
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();

       }
 
بالا