• 0
Luna Volver A salir

ممكن في حل المشكلة هذا الكود

سؤال

السلام عليكم اخواني الغاليين

هل من الممكن ان اجد من يساعدني في تصحيح هذا الكود

هذا الكود صحيح و لكن المشكلة ان يتوقف عن العمل في الحالة الاولى و لا اعرف السبب

#include<iostream.h>		  const size =20;		  int queue[size];		  int stack[size];		  int item ,  item2,n,i,r,f,top;		  void push(int item){		  if(top>=size-1)		  cout<<"full"<<endl;		  else			  top++;			  stack[top]=item;			  }		void pop()		{		  if(top==-1)		  cout<<"empty"<<endl;		  else		 item= stack[top];		 top--;		 }		 void displays(){		  for(i=top;i>=0;i++)		  cout<<stack[i]<<" ";		  cout<<endl;		  }		  void addqueue(int item2){			if(r>size-1)			cout<<"fullq"<<endl;			else			  r++;			  queue[r]=item2 ;			  }		  void deleteq(){			 if(f>r)			 cout<<"empty"<<endl;			 else				item2=queue[f];				f++;				}            void display()	  {	if(r<f)	cout<<"the queue is empty\n";	else	cout<<"content the queue\n";	for(i=r;i>=f;i--)	cout<<queue[i]<<endl;	 }	 main()	 {		 top=-1;		 f=r=-1;		 int s;		 cin>>s;		 switch(s)		 {	case 1:	 cout<<"how many"<<endl;		  cin>>n;		  for(i=0;i<n;i++)		  {			 item=0;			 push(item) ;			 };break ;	 case 2:			 cout<<"howmany"<<endl;				cin>>n;				  for(i=0;i<n;i++)					{					  addqueue(stack[i]);					  pop();					  };break ;	case 3:		  display() ; break ;		}		}
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

3 إجابة على هذا السؤال .

  • 0
#include<iostream>using namespace std;const int size =20;int queue[size];int stack[size];int item, item2, n, i, r, f, top;void push(int item){	if(top>=size-1)					//سيبقى مخزن بلا قيمة وهو الأخير بسبب علامة = 		cout<<"full"<<endl;	else		top++;	stack[top]=item;			// سينفذ في حالة true or false بسبب عدم وجود أقواس {}}void pop(){	if(top==-1)		cout<<"empty"<<endl;	else		item= stack[top];	top--;						// لابد من وجود أقواس نفس الدالة السابقة حتى ينفذ الأمرين		}void displays(){	for(i=top;i>=0;i++)				// كيف يزداد!!! إذا ستصبح infinite loop		cout<<stack[i]<<" ";	cout<<endl;}void addqueue(int item2){	if(r>size-1)							// هنا صحيحة لماذا لا تكون مثلها في الدالة البوش		cout<<"fullq"<<endl;	else		r++;							// أقواس حتى ينفذ الأمرين{}	queue[r]=item2 ;}void deleteq(){	if(f>r)		cout<<"empty"<<endl;	else		item2=queue[f];		f++;}void display(){	if(r<f)		cout<<"the queue is empty\n";	else		cout<<"content the queue\n";		for(i=r;i>=f;i--)						// تنفذ في الحالة الصحيحة والخاطئة		cout<<queue[i]<<endl;}int main(){	top=-1;	f=r=-1;	int s;	cout<<stack[6];	cin>>s;		switch(s)	{	case 1:		cout<<"how many"<<endl;		cin>>n;		  for(i=0;i<n;i++)		  {			 item=0;							 push(item) ;				// كل المدخلات ستكون صفر			 };							// loop لا تنتهي ب semicolon ;		  break ;	 	case 2:			cout<<"howmany"<<endl;			cin>>n;			 for(i=0;i<n;i++)			 {				 addqueue(stack[i]);			//كل المدخلات ستكون صفر				 pop();			 }			break ;	case 3:		  display() ;		  break ;		}	system("pause");	return 0;}

ذكرت بعض الأخطاء بدون تصحيحها وجميع ما ذُكر أخطاء في syntax فقط

تم تعديل بواسطه المـقـدام
3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

قمت بتنسيق الكود و قرأت الحالة الاولي فقط و كان ينقص التحقق من أن قيمة n قد تكون أكبر من size:

#include <iostream>using namespace std;const size =20;int queue[size];int stack[size];int item, item2, n, i, r, f, top;void push(int item){	if (top >= size-1)		cout<<"full"<<endl;	else	{		top++;		stack[top]=item;	}}void pop(){	if (top == -1)		cout<<"empty"<<endl;	else	{		item = stack[top];		top--;	}}void displays(){	for(i=top;i>=0;i++)		cout<<stack[i]<<" ";	cout<<endl;}void addqueue(int item){	if (r>size-1)		cout<<"fullq"<<endl;	else	{		r++;		queue[r]=item2;	}}void deleteq(){	if(f>r)		cout<<"empty"<<endl;	else	{		item2=queue[f];		f++;	}}void display(){	if(r<f)		cout<<"the queue is empty\n";	else	{		cout<<"content the queue\n";		for(i=r;i>=f;i--)			cout<<queue[i]<<endl;	}}int main(){	top=f=r=-1;	int s;	cin>>s;	switch(s)	{	case 1:		cout<<"how many"<<endl;		cin>>n;		if (n>size) n=size;		for(i=0;i<n;i++)		{			item=0;			push(item);		};		break;	case 2:		cout<<"howmany"<<endl;		cin>>n;		for(i=0;i<n;i++)		{			addqueue(stack[i]);			pop();		};		break;		case 3:		display();		break;	}}

و الله ولي التوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخي على المساعدة

 ولكن بالنسبة لتحقق من قيمة n   فانه لا داعي لتحقق منها لان المكدس لدينا فارغ و يبدأ بالاضافة الى ان يصل نهاية في حالة ان n تساوي الحجم و يعرض رسالة خطأ على " ان المكدس ممتلئ"

كما ان الكود ايضا لا يعمل بعد هذا التعديل الذي قمت به و لك مني خلص الشكر و التقدير

تم تعديل بواسطه Luna Volver A salir
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .