الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعده في ال stack

بدأه &AbOooOd& في 27 أكتوبر 2011 · 2 رد · 2,455 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أرجوكم اريد شرح مبسط لهذه الأكواد في ال stack وهي بلغة ال ++c

#include<iostream>
#include<process.h>
#include <conio.h>
using namespace std;
#define size 20;
class stack
{
	int a[size];
	int tos;
public:
	stack();
	void push(int);
	int pop();
	int isimpty();
	int isfull();
	void topelem();
	void display();
};
stack::stack()
{
	tos=0;
}
int stack::isimpty()
{
	return(tos==0?1:0);
}
int stack::isfull()
{
	return(tos==size?1:0);
}
void stack::push(int i)
{
	if(!isfull())
	{
		a[tos]=i;
		tos++;
	}
	else
		cout<<"stack overflow !possible data loss!";
}
}
int stack::pop();
{
	if(!isempty())
	{
		{
			int data=a[tos];
			a[tos]=Null;
			tos--;
		}
		return(a[tos])
	}
	else
	{
		cout<<"stack is empty!what to pop....!";
	}
	void stack::display()
	{
		int j=0;
		int elem=0;
		while(tos!j)
		{
			elem=a[j];
			cout<<"the element in the location of ["<<j<<"] is  "<<elem<<endl;
			++j;
		}
	}
	return0;
}

void stack ::topelem()
{
	cout<<"the most top element is"<<a[tos-1]<<endl;
}
void main()
{
	stack s;
	int ch;
	int ch=1,num;
	while(ch!=0)
	{
		cout<<"stack operations main menu 1.push  2.pop  3.isempty  4.isfull  5.display  6.topelem  0.exit";
		switch(ch)
		{
		case 0:
			exit(1);
		case 1:
			cout<<"enter the num to push";
			cin>>num;
			s.push(num);
			break;
		case 2:

			cout<<" num popped from the stack is : ";

			s.pop();
			break;

		case 3:
			(s.isimpty())?(cou<<"stack is empty."):(cout<<"stack is notempty.");


			break;
		case 4:
			(s.isfull())?(cou<<"stack is empty."):(cout<<"stack is notfull.");


			break;
		case 5:
			cout<<"enter the num to push";


			s.display();
			break;
		case 6:


			s.topelem();
			break;
		default:
			cout<<"illegal option .please  try again";
		}



		getch();

	}
}
#2

طيب رح اكتبلك الشرح وارجع ارفعه ليك وان شاء الله تفهم عليه

انتظرني وراجعلك ان شاء الله

تدلل اخوية الوردة

#3

تفضل اخوية رفعتلك البرنامج والشرح بالمرفقات وكذلك بالكود وان شاء الله ينفعك واي سؤال انا حاضر

لاتنساني من صالح دعائك ربي يحفظك ويجزيك الف خير

دعائكم لي ولوالدي وللمسلمين جميعاً بظهر الغيب ربي يحفظكم

stack شرح.txt

#include<iostream>
#include<process.h>
#include <conio.h>
using namespace std;
#define size 20;
class stack
{
        int a[size];  // هذه مصفوفة لحجم الستاك الكلي
        int tos;      // مؤشر لمعرفة حدود الستاك في حالة الاضافة والحذف لمعرفة الى اين وصل الستاك
public:
        stack();         //دالة كونستركنتر لاعطاء قيمة ابتدائية للمئشر ومن اين ابدا به ويفضل من -1 حتى يأخذ موقع الصفر حتى لا يضيع
        void push(int);   // دالة الاضافة الى مصفوفة الاستاك
        int pop();        //دالة الحذف من مصفوفة الستاك
        int isimpty();    //  دالة لفحص الستاك عند الحذف لمعرفةته هل فرغ ام لا لحذف عنصر من داخل الستاك
        int isfull();     // دالة لفحص الستاك عند الاضافة لمعرفة هل امتلئ ام لا للاضافة عنصر جديد
        void topelem();
        void display();    // دالة لطباعة محتويات الستاك
};
stack::stack()
{
        tos=0;
}
int stack::isimpty()
{
        return(tos==0?1:0);  // هنا اذا كان المؤشر يساوي صفر يعني الستاك فارغ رجع قيمة 1 واذا لا رجع صفر
}
int stack::isfull()
{
        return(tos==size?1:0);  //  هنا اذا كان المؤشر يساوي صفر يعني الستاك مملوء رجع قيمة 1 واذا لا رجع صفر
}
void stack::push(int i)
{
        if(!isfull())   //  اذا دالة الفول لاتساوي 1 يعني غير مملوء اضف العنصر الجديد الي هو حرف الاي بالانكليزي الى مصفوفة الستاك وقدم المؤشر خطوة
        {
                a[tos]=i; // هنا الاضافة
                tos++;  // هنا تقديم المؤشر
        }
        else
                cout<<"stack overflow !possible data loss!"; // واذا دالة الفول تساوي واحد يعني الستاك مملوء فتظهر هذه الرسالة
}
}
int stack::pop();  
{
        if(!isempty())  // اذا دالة الامبتي لاتساوي 1 يعني غير فارغ احذف العنصر من مصفوفة الستاك ورجع المؤشر خطوة
        {
                {
                        int data=a[tos]; // ارجاع القيمة من المصفوفة الى متغير لذفه
                        a[tos]=Null;  // حذف القيمة
                        tos--;  // تنقيص المؤشر
                }
                return(a[tos])  // ارجاع القيمة المحذوفة لعرضها ع الشاشة فقط
        }
        else
        {
                cout<<"stack is empty!what to pop....!"; // واذا دالة الامبتي تساوي 1 يعني الستاك فارغ فتظهر هذه الرسالة تخبرنا ان الستاك فارغ ولايمكن الحذف لانه فارغ
        }
        void stack::display()  // دالة الطباعة لطباعة ما بداخل مصفوفة الستاك ع الشاشة
        {
                int j=0;
                int elem=0;
                while(tos!j)  // اذا كان مؤشر الستاك لايساوي صفر يعني غير فارغ
                {
                        elem=a[j]; // حول القيمة من المصفوفة الى متغير
                        cout<<"the element in the location of ["<<j<<"] is  "<<elem<<endl; // اطبع المتغير هنا 
                        ++j; زود العداد ليذهب للموقع الثاني
                }
        }
        return0;
}

void stack ::topelem()
{
        cout<<"the most top element is"<<a[tos-1]<<endl;
}
void main()// البرنامج الرئيسي حيث سوف نحدد العمليات التي سوف اقوم بها عن طريق السوج كيس يعني احددة نوع العملية برقم مثل للخروج 0 وللاضافة 1 وللحذف 2 وهكذا وعند اختيار الرقم يذهب للاعلى الى الدالة ليقوم بالعمل
{
        stack s;
        int ch;
        int ch=1,num;
        while(ch!=0)
        {
                cout<<"stack operations main menu 1.push  2.pop  3.isempty  4.isfull  5.display  6.topelem  0.exit";
                switch(ch)
                {
                case 0:
                        exit(1);
                case 1:
                        cout<<"enter the num to push";
                        cin>>num;
                        s.push(num);
                        break;
                case 2:

                        cout<<" num popped from the stack is : ";

                        s.pop();
                        break;

                case 3:
                        (s.isimpty())?(cou<<"stack is empty."):(cout<<"stack is notempty.");


                        break;
                case 4:
                        (s.isfull())?(cou<<"stack is empty."):(cout<<"stack is notfull.");


                        break;
                case 5:
                        cout<<"enter the num to push";


                        s.display();
                        break;
                case 6:


                        s.topelem();
                        break;
                default:
                        cout<<"illegal option .please  try again";
                }



                getch();

        }
}

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…