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

[تنبيه - عنوان غير مناسب : ]؟؟

بدأه Palestine55 في 12 فبراير 2009 · 3 رد · 478 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه

المحاولات اللي عندي عملت الستاك والكيوو ولكن استخدامها في الكلينت هو المشكلة والستاك هو

  1.  
  2. char const MAX_ITEMS=5;
  3.  
  4. typedef int ItemType;
  5.  
  6. class FullStack{};
  7.  
  8. class EmptyStack{};
  9.  
  10. class StackType{
  11.  
  12. public:
  13.  
  14. StackType();
  15.  
  16. bool IsEmpty() const;
  17.  
  18. bool IsFull() const;
  19.  
  20. void Push(ItemType item);
  21.  
  22. void Pop(ItemType&);
  23.  
  24. private:
  25.  
  26. int top;
  27.  
  28. ItemType items[MAX_ITEMS];
  29.  
  30. };
  31.  
  32.  
  33. StackType::StackType(){
  34.  
  35. top = -1;
  36.  
  37. }
  38.  
  39. bool StackType::IsEmpty() const
  40.  
  41. {
  42.  
  43. return (top == -1);
  44.  
  45. }
  46.  
  47. bool StackType::IsFull() const
  48.  
  49. {
  50.  
  51. return (top == MAX_ITEMS-1);
  52.  
  53. }
  54.  
  55. void StackType::Push(ItemType newItem){
  56.  
  57. if(IsFull())
  58.  
  59. throw FullStack();
  60.  
  61. top++;
  62.  
  63. items[top] = newItem;
  64.  
  65. }
  66.  
  67. void StackType::Pop(ItemType& item){
  68.  
  69. if(IsEmpty())
  70.  
  71. throw EmptyStack();
  72.  
  73. item= items[top];
  74.  
  75. top--;
  76.  
  77. }
  78. والكيو هو
  79.  
  80.  
  81. char const MAX_ITEMS=5;
  82.  
  83. typedef char ItemType;
  84.  
  85. class FullQue
  86.  
  87. {
  88.  
  89. };
  90.  
  91. class EmptyQue
  92.  
  93. {
  94.  
  95. };
  96.  
  97. class QueType
  98.  
  99. {
  100.  
  101. public:
  102.  
  103. QueType();
  104.  
  105. bool IsEmpty()const;
  106.  
  107. bool IsFull()const;
  108.  
  109. void EnQue(ItemType item);
  110.  
  111. void DeQue(ItemType item);
  112.  
  113. private:
  114.  
  115. int front,rear;
  116.  
  117. ItemType items[MAX_ITEMS];
  118.  
  119. };
  120.  
  121.  
  122.  
  123.  
  124. QueType::QueType()
  125.  
  126. {
  127.  
  128. front=MAX_ITEMS-1;
  129. back=MAX_ITEMS-1;
  130.  
  131. }
  132.  
  133. bool QueType::IsEmpty() const
  134.  
  135. {
  136.  
  137. return(back==front);
  138.  
  139. }
  140.  
  141. bool QueType::IsFull() const
  142.  
  143. {
  144.  
  145. return(((back+1)% MAX_ITEMS)==front);
  146.  
  147. }
  148.  
  149. void QueType::EnQue(ItemType NewItem)
  150.  
  151. {
  152.  
  153. if(IsFull())
  154.  
  155. throw FullQue();
  156.  
  157. else
  158.  
  159. {
  160.  
  161. back=(back+1)% MAX_ITEMS;
  162.  
  163. items[back]=NewItem;
  164.  
  165. }
  166.  
  167. }
  168.  
  169. void QueType::DeQue(ItemType item)
  170.  
  171. {
  172.  
  173. if(IsEmpty())
  174.  
  175. throw EmptyQue();
  176.  
  177. else
  178.  
  179. {
  180.  
  181. front=(front+1)%MAX_ITEMS;
  182.  
  183. item=items[front];
  184.  
  185. }
  186.  
  187. }
  188.  

هذا اللي بدوا فيه مع انه حاسة اني ماعملوا شي

وشكرا بس انا بدي بطريقة شرحكم لانها بجد بتريحني

شكرا لاهتمامكم

تحياتي

تم تعديل هذه المشاركة بواسطة Xacker في 12 فبراير 2009 في 21:17

#2

الأخ الكريم/الأخت الكريمة

السلام عليكم ورحمة الله وبركاته

مرحباً بكم في منتدى الفريق العربي للبرمجة

نود تنبيهك أن العنوان غير مناسب.

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

السلام عليكم ,,

هذا الكود بعد تعديله :)

كود الـ Stack سهل و جميل.. بينما برأيي أفضل طريقة لمعرفة إذا كانت الـ Circular Buffer فارغ أو ممتلئ فعلينا توظيف متغير ثالث المسمى count لحساب عدد العناصر :)

عموماً ما قمت بتصميمه لا يسمى Queue و لكنه يسمى Circular Buffer و في أحسن الأحوال يسمى Circular Queue ..

تتبعي الفروق بين كودك و الكود المعدل و لاحظي الفروق لتصححي أخطاءك ...

[color= #007f00;]#include <iostream>

 

[color= #0000ff;]typedef [color= #0000ff;]int ItemType;

 

[color= #0000ff;]char [color= #0000ff;]const MAX_ITEMS [color= #000000;]= [color= #ff0000;]5;

 

 

[color= #0000ff;]class FullStack[color= #000000;]{[color= #000000;]};

[color= #0000ff;]class EmptyStack[color= #000000;]{[color= #000000;]};

 

[color= #0000ff;]class StackType[color= #000000;]{

 

[color= #0000ff;]public[color= #000000;]:

 

	StackType[color= #000000;]([color= #000000;]);	 

 

	[color= #0000ff;]bool IsEmpty[color= #000000;]([color= #000000;]) const;	 

	[color= #0000ff;]bool IsFull[color= #000000;]([color= #000000;]) const;	 

	[color= #0000ff;]void Push[color= #000000;]( [color= #0000ff;]const ItemType[color= #000000;]& newItem [color= #000000;]);

	[color= #0000ff;]void Pop[color= #000000;]( ItemType[color= #000000;]& item [color= #000000;]);

 

[color= #0000ff;]private[color= #000000;]:

 

	[color= #0000ff;]int top;	 

	ItemType items[color= #000000;][MAX_ITEMS[color= #000000;]];

 

[color= #000000;]};

 

 

StackType[color= #000000;]::[color= #808000;]StackType[color= #000000;]([color= #000000;])[color= #000000;]{

 

	top [color= #000000;]= [color= #ff0000;]-1;

[color= #000000;]}

 

[color= #0000ff;]bool StackType[color= #000000;]::[color= #808000;]IsEmpty[color= #000000;]([color= #000000;]) [color= #0000ff;]const[color= #000000;]{

 

	[color= #0000ff;]return [color= #000000;](top [color= #000000;]== [color= #ff0000;]-1[color= #000000;]);

[color= #000000;]}

 

[color= #0000ff;]bool StackType[color= #000000;]::[color= #808000;]IsFull[color= #000000;]([color= #000000;]) [color= #0000ff;]const[color= #000000;]{

 

	[color= #0000ff;]return [color= #000000;](top [color= #000000;]== MAX_ITEMS[color= #ff0000;]-1[color= #000000;]);

[color= #000000;]}

 

[color= #0000ff;]void StackType[color= #000000;]::[color= #808000;]Push[color= #000000;]( [color= #0000ff;]const ItemType[color= #000000;]& newItem [color= #000000;])[color= #000000;]{

 

	[color= #0000ff;]if[color= #000000;]( IsFull[color= #000000;]([color= #000000;]) [color= #000000;])	 

	[color= #0000ff;]throw FullStack[color= #000000;]([color= #000000;]);

 

	top[color= #000000;]++;

	items[color= #000000;][top[color= #000000;]] [color= #000000;]= newItem;

[color= #000000;]}

 

[color= #0000ff;]void StackType[color= #000000;]::[color= #808000;]Pop[color= #000000;]( ItemType[color= #000000;]& item [color= #000000;])[color= #000000;]{

 

	[color= #0000ff;]if[color= #000000;]( IsEmpty[color= #000000;]([color= #000000;]) [color= #000000;])	 

	[color= #0000ff;]throw EmptyStack[color= #000000;]([color= #000000;]);

 

	item [color= #000000;]= items[color= #000000;][top[color= #000000;]];	 

	top[color= #000000;]--;

[color= #000000;]}

 

[color= #0000ff;]class FullQue[color= #000000;]{[color= #000000;]}; 

[color= #0000ff;]class EmptyQue[color= #000000;]{[color= #000000;]};

 

[color= #0000ff;]class QueType[color= #000000;]{

 

[color= #0000ff;]public[color= #000000;]:

 

	QueType[color= #000000;]([color= #000000;]);

 

	[color= #0000ff;]bool IsEmpty[color= #000000;]([color= #000000;])const; 

	[color= #0000ff;]bool IsFull[color= #000000;]([color= #000000;])const; 

	[color= #0000ff;]void EnQue[color= #000000;]( [color= #0000ff;]const ItemType[color= #000000;]& NewItem [color= #000000;]); 

	[color= #0000ff;]void DeQue[color= #000000;]( ItemType[color= #000000;]& item [color= #000000;]);

 

[color= #0000ff;]private[color= #000000;]:

 

	[color= #0000ff;]int front, back, count;  [color= #007f00;]// back instead of rear

	ItemType items[color= #000000;][MAX_ITEMS[color= #000000;]]; 

[color= #000000;]};

 

QueType[color= #000000;]::[color= #808000;]QueType[color= #000000;]([color= #000000;])[color= #000000;]{

 

	front [color= #000000;]= back [color= #000000;]= count [color= #000000;]= [color= #ff0000;]0;

[color= #000000;]}

 

[color= #0000ff;]bool QueType[color= #000000;]::[color= #808000;]IsEmpty[color= #000000;]([color= #000000;]) [color= #0000ff;]const[color= #000000;]{

 

	[color= #0000ff;]return[color= #000000;]( count [color= #000000;]== [color= #ff0000;]0 [color= #000000;]); 

[color= #000000;]}

 

[color= #0000ff;]bool QueType[color= #000000;]::[color= #808000;]IsFull[color= #000000;]([color= #000000;]) [color= #0000ff;]const[color= #000000;]{

 

	[color= #0000ff;]return[color= #000000;]( count [color= #000000;]== MAX_ITEMS [color= #000000;]); 

[color= #000000;]}

 

[color= #0000ff;]void QueType[color= #000000;]::[color= #808000;]EnQue[color= #000000;]( [color= #0000ff;]const ItemType[color= #000000;]& NewItem [color= #000000;])[color= #000000;]{

 

	[color= #0000ff;]if[color= #000000;](IsFull[color= #000000;]([color= #000000;])[color= #000000;]) 

		[color= #0000ff;]throw FullQue[color= #000000;]([color= #000000;]);

 

	[color= #0000ff;]else[color= #000000;]{	 

	items[color= #000000;][back[color= #000000;]] [color= #000000;]= NewItem;

	back [color= #000000;]= [color= #000000;](back[color= #ff0000;]+1[color= #000000;]) [color= #000000;]% MAX_ITEMS;

	count[color= #000000;]++;

	[color= #000000;]}

 

[color= #000000;]}

 

[color= #0000ff;]void QueType[color= #000000;]::[color= #808000;]DeQue[color= #000000;]( ItemType[color= #000000;]& item [color= #000000;])[color= #000000;]{

 

	[color= #0000ff;]if[color= #000000;](IsEmpty[color= #000000;]([color= #000000;])[color= #000000;]) 

		[color= #0000ff;]throw EmptyQue[color= #000000;]([color= #000000;]);

 

	[color= #0000ff;]else[color= #000000;]{ 

	item [color= #000000;]= items[color= #000000;][front[color= #000000;]]; 

	front [color= #000000;]= [color= #000000;](front[color= #ff0000;]+1[color= #000000;]) [color= #000000;]% MAX_ITEMS; 

	count[color= #000000;]--;

	[color= #000000;]}

 

[color= #000000;]}

 

[color= #0000ff;]int main[color= #000000;]([color= #000000;])[color= #000000;]{

 

	StackType stackT;

	QueType queueT;

	[color= #0000ff;]int v [color= #000000;]= [color= #ff0000;]0;

 

	[color= #0000ff;]for[color= #000000;]( [color= #0000ff;]int i [color= #000000;]= [color= #ff0000;]0; i [color= #000000;]< [color= #ff0000;]7; i[color= #000000;]++ [color= #000000;])[color= #000000;]{

 

		[color= #0000ff;]try[color= #000000;]{

			queueT.[color= #808000;]EnQue[color= #000000;]( i [color= #000000;]);

		[color= #000000;]}				

		[color= #0000ff;]catch[color= #000000;]( FullQue [color= #000000;])[color= #000000;]{

				std[color= #000000;]::[color= #808000;]cout [color= #000000;]<< [color= #A31515;]"Full Queue" [color= #000000;]<< std[color= #000000;]::[color= #808000;]endl;

		[color= #000000;]}

 

		[color= #0000ff;]try[color= #000000;]{

			stackT.[color= #808000;]Push[color= #000000;]( i [color= #000000;]);

		[color= #000000;]}

		[color= #0000ff;]catch[color= #000000;]( FullStack [color= #000000;])[color= #000000;]{

				std[color= #000000;]::[color= #808000;]cout [color= #000000;]<< [color= #A31515;]"Full Stack" [color= #000000;]<< std[color= #000000;]::[color= #808000;]endl;

		[color= #000000;]}

	[color= #000000;]}

 

	[color= #0000ff;]for[color= #000000;]( [color= #0000ff;]int i [color= #000000;]= [color= #ff0000;]0; i [color= #000000;]< [color= #ff0000;]7; i[color= #000000;]++ [color= #000000;])[color= #000000;]{

 

		[color= #0000ff;]try[color= #000000;]{

			queueT.[color= #808000;]DeQue[color= #000000;]( v [color= #000000;]);

		[color= #000000;]}				

		[color= #0000ff;]catch[color= #000000;]( EmptyQue [color= #000000;])[color= #000000;]{

				std[color= #000000;]::[color= #808000;]cout [color= #000000;]<< [color= #A31515;]"Empty Queue" [color= #000000;]<< std[color= #000000;]::[color= #808000;]endl;

		[color= #000000;]}

 

		[color= #0000ff;]try[color= #000000;]{

			stackT.[color= #808000;]Pop[color= #000000;]( v [color= #000000;]);

		[color= #000000;]}

		[color= #0000ff;]catch[color= #000000;]( EmptyStack [color= #000000;])[color= #000000;]{

				std[color= #000000;]::[color= #808000;]cout [color= #000000;]<< [color= #A31515;]"Empty Stack" [color= #000000;]<< std[color= #000000;]::[color= #808000;]endl;

		[color= #000000;]}

	[color= #000000;]}

 

	[color= #0000ff;]return [color= #ff0000;]0;

[color= #000000;]}
تحياتي ....
#4

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــة ،،

اشكر لكم اهتمامكم ولكن انا لوربطت هالستاك والكيوو الموجودين اعلاه مع برنامج للـpalindrome فانه رح يسير كالاتي

:


  1. <LI style="BACKGROUND: #fcfcfc">#include <iostream>
    #include <string>
    typedef string ItemType;
    class FullQue{};
    class EmptyQue{};
    class QueType
    {
    public:
    QueType();
    bool IsEmpty()const;
    bool IsFull()const;
    void EnQue( const ItemType& Stri);
    void DeQue( ItemType& Strs);
    private:
    int front, back, count; // back instead of rear
    ItemType Str[MAX_ITEMS];
    };
    QueType::QueType()
    {
    front = back = count = 0;
    }
    bool QueType::IsEmpty() const
    {
    return( count == 0 );
    }
    bool QueType::IsFull() const
    {
    return( count == MAX_ITEMS );
    }
    void QueType::EnQue( const ItemType& Stri )
    {
    if(IsFull())
    throw FullQue();
    else
    {
    items[back] = NewItem;
    back = (back+1) % MAX_ITEMS;
    count++;
    }
    }
    void QueType::DeQue( ItemType& Strs )
    {
    if(IsEmpty())
    throw EmptyQue();
    else
    {
    item = items[front];
    front = (front+1) % MAX_ITEMS;
    count--;
    }
    }
    <LI style="BACKGROUND: #fcfcfc">#include <iostream>
    #include <string>
    typedef string ItemType;
    char const MAX_ITEMS = 15;
    class FullStack{};
    class EmptyStack{};
    class StackType{
    public:
    StackType();
    bool IsEmpty() const;
    bool IsFull() const;
    void Push( const ItemType& newItem );
    void Pop( ItemType& item );
    private:
    int top;
    ItemType Str[MAX_ITEMS];
    };
    StackType::StackType()
    {
    top = -1;
    }
    bool StackType::IsEmpty() const
    { return (top == -1);
    }
    bool StackType::IsFull() const
    {
    return (top == MAX_ITEMS-1);
    }
    void StackType::Push( const ItemType& Stri )
    {
    if( IsFull() )
    throw FullStack();
    top++;
    items[top] = newItem;
    }
    void StackType::Pop( ItemType& Strn )
    {
    if( IsEmpty() )
    throw EmptyStack();
    item = items[top];
    top--;
    }

  2. #include <iostream>
    #include <string>
    #include <cstdlib>
    #include"StackType.h"
    #include"QueType.h"
    using namespace std;
    void main()
    {
    void InsertPal(ItemType Strn)
    {
    system("cls");
    cout <<"The new string: ";
    cin>>Strn;
    }
    void PrintF(ItemType Strn)
    {
    StackType PalS;
    PalS.Pop(&Strn);
    cout<< Strn;
    }
    void PrintB(ItemType Stri)
    {
    QueType PalQ;
    PalQ.DeQue(Stri);
    cout<< Stri;
    }
    bool IsPal( ItemType Str )
    {
    QueType PalQ;
    StackType PalS;
    for ( unsigned int I = 0; I < Strn.length();
    I++ )
    {
    if( isalpha( Strm[ I ] ) && isupper( Str[ I ] ) )
    {
    Str[ I ] = tolower ( Str[ I ] );
    PalQ.push( Str[ I ] );
    PalS.push( Str[ I ] );
    }
    else
    if( isalpha( Str[ I ] ) )
    {
    PalQ.push( Str[ I ] );
    PalS.push( Str[ I ] );
    }
    }
    while( !PalQ.empty() )
    {
    if( PalQ.front() != PalS.top() )
    return false;
    PalQ.pop();
    PalS.pop();
    }
    return true;
    }
    int choice;
    do{
    MainMenu(choice);
    switch(choice)
    {
    case 1:InsertPal(Str);
    break;
    case 2:PrintF(Str);
    break;
    case 3:PrintB(Str);
    break;
    case 4:IsPal(Str);
    break;
    case 5: system("cls");
    cout <<"\n Thank you for using this application.. \n\n We hope you a nice day!\n\n\n\n";
    system("pause");
    exit(0);
    }
    }
    while(choice !=5);
    }
    void MainMenu(int& choice){
    system("cls");
    cout<<"\n\n\n";
    cout<<" M A I N M E N U \n\n";
    cout<<" ----------------- \n\n";
    cout<<" 1.NEW STRING\n\n";
    cout<<" 2.PRINT FORWARD\n\n";
    cout<<" 3.PRINT BACK\n\n";
    cout<<" 4.TEST A PALINDROME\n\n";
    cout<<" 5.Exit\n\n";
    cout<<"\n\n";
    cout<<" -> Enter Your Choice: ";
    cin>>choice;
    }
    system("pause");
    }

    هاد الكود اعطاني خطا لا اعرف ليش ??

~

تم تعديل هذه المشاركة بواسطة Palestine55 في 21 فبراير 2009 في 00:09

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

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

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

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

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