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

Data Structure .. Queueسؤال

مغلق
بدأه sana101 في 19 نوفمبر 2004 · 6 رد · 705 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أنا مشاركه جديده بهذا المنتدى الرائع ...

عندي سؤال في الداتا ستركشر .. و خصوصاً وفي الكيوو ...

طبعاً ++C

اذا بالله حدا يساعدني فيه ..

 

Part One  
Use the STL Queue to 
 Write the follwing C++ functions : -
1.      FillQ  :  Randomly fills the queue with 10 integers [1 –20].

2.      Print : Print whole queue items as their input order.

3.      Reverse_print : Print the queue elements in reverse order.

4.      Count : Count how many odd numbers and how many even at the last queue.

5.      Size    :  An independent function that return the queue size.

6.      Split : That split a queue into odd queue and even queue. 



Part Two: “Build the Queue class”   

Assemble the appropriate declarations and codes given in the lectures into the files Queue.h and Queue.cpp and verify that the Queue.cpp compiles correctly so that the class Queue can be used by other client programs.


Part Three 

Write the following Functions using the last Queue

7.      RemoveItem : This function should  remove all occurrences of  item from the queue  q , and should keep the same order of the queue . 

example :

    q(before) is      1 2 4 5 2 5 2 6 2 

     item=2 è q(after)  is 1 4 5 5 6

5.  Insert mid: Insert a given value in the middle of the queue, if the size before insertion is odd, assume the upper half to be larger by one.

6.  FindIndex ( friend function): print the index in which element X found at.

و هاي محاولتي ... بس ؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!!

source File

#include<iostream.h>
#include<cstdlib>
#include "Queue.h"

queue ::queue ()

{
	count=0;
	front=0;
	rear=maxsize-1;
}
                                           // Def of My Q.
Err_code queue ::append (q_entry item)    // append
{
	if (count==maxsize)
  return overflow;
	if (rear+1==maxsize)
  rear=0;
	else rear++;
	entry [rear]=item;
	count++;
	return success;
}

Err_code queue ::serve()                 //serve
{ 
	if (count==0)
  return underflow;
	front=(front+1)%maxsize;
	count--;
	return success;

}

Err_code queue ::retrive(q_entry & item) const //retrive
{
    if (count==0)
	return underflow;
    item=entry[front];
	return success;
}

bool queue ::empty() const                    // empty
{
	if (count==0)
  return true;

	return false;
}
                                            // End Of Q Def.

                                            //Def of main Fun 

void fillq(queue &q)                        //Fill Q.
{
	q_entry x;
	for ( int i=0; i<10; i++)
  x=1+ rand ()%19;
	q.append(x);
	cout<<endl<<endl;
}

void print (queue & q)                      // print items as their inputs
{
	q_entry x;
	queue temp , temp2;
	temp=q;
	while (!temp.empty() )
	{
  temp.retrive(x);
  temp.serve();
  temp2.append (x);
	}
	while(!temp2.empty() )
	{
  cout<<temp2.retrive(x);
  temp2.serve();
	}
}

void reversr_print (queue &q)                // print reverse .. as normal
{
	q_entry x;
	q.retrive (x);
	cout<<endl<<endl;
}

/*void count ( queue &q )                     // count even & odd In Q.
{
	q_entry x;
	int even_counter=0;
	int  odd_counter=0;

	if (q.retrive(x)%2==0)
	even_counter++;
	q.serve();
	else 
	odd_counter++;
	q.serve();
}
*/

int size (queue &q)                       // An Independent Fun. To Know The Size Of Q.
{
	q_entry x;
	int sum=0;
	queue temp;

	while (!q.empty())
	{
  q.retrive(x);
  q.serve ();
  temp.append(x);
  sum++;
	}

	while (!temp.empty())
	{
  temp.retrive(x);
  temp.serve();
  q.append(x);
	}

	return sum;
}

/*void split(queue & q )//, queue & q1 , queue & q2)   // fun to split Q To Even & Odd ..
{
	q_entry x;
	queue q1 , q2;

	while (!q.empty())
  q.retrive(x);
	if (x%2==0)
  q1.append(x);
	q.serve();

	else 
  q2.append(x);
  q.serve();
}
*/






void main ()
{
	queue q;
	int select;
	bool flag=true;
	while(flag)


	{	cout<<"Welcome To My Program "<<endl<<endl;

  cout<<"(1) Append "<<endl;
  cout<<"(2) Print "<<endl;

  cout<<"select "<<endl<<endl;


  cin>>select;
  cout<<endl<<endl;

  switch (select)
  {
  case 1 :fillq(q); break;
  case 2 :print(q); break;
  case 3 :flag=false; break;
  }
	}


}

و ال Header

typedef int q_entry;
enum Err_code {success , overflow , underflow};
const int maxsize=100;
class queue                                 // Begining of My Queue 
{
public :
      queue ();
   Err_code append (q_entry);
   Err_code serve ();
   Err_code retrive (q_entry & ) const;
   bool empty () const;

protected :
	int count;
	q_entry entry[maxsize];
	int front , rear;
};

أرجو المساعده ... لأني ما أجيت هون الا و أنا مستنفذه كل الطرق و الوسائل

يعطيكوا العافيه و بالله تردوا بسرعه ...

#3

شكراً أخي كثير ...

بس يا ريت شويه شرح على برنامجي

و شكراً على كل حال و الله ما قصرت

#4

ممكن شرح عن

Friend Function

في البرنامج فوق ...

و بطلب من المشرفين بالقسم ... شرح للكود ...

يعطيكوا العافيه

#5

أرجوكم ساعدوني ... يا مشرفين ؟؟؟؟؟؟

قرب الموعد .......

#7

شكراً لكل اللي ساعدوني ...

لكن البرنامج اللي بدي ايه

++C

و ليس C

كثير من أوامر السي مش فاهمها ...

أرجو منكم المساعده ...

و هاي أخر محاولاتي

#include<iostream.h>
//#include<cstdlib>
#include "Queue.h"

//////////////////////////////////////////////////////////////////////////

queue ::queue ()

{
	count=0;
	front=0;
	rear=maxsize-1;
}
                                           // Def of My Q.
//////////////////////////////////////////////////////////////////////////

Err_code queue ::append (q_entry item)    // append
{
	if (count==maxsize)
  return overflow;
	if (rear+1==maxsize)
  rear=0;
	else rear++;
	entry [rear]=item;
	count++;
	return success;
}

//////////////////////////////////////////////////////////////////////////

Err_code queue ::serve()                 //serve
{ 
	if (count==0)
  return underflow;
	front=(front+1)%maxsize;
	count--;
	return success;

}

//////////////////////////////////////////////////////////////////////////

Err_code queue ::retrive(q_entry & item) const //retrive
{
    if (count==0)
	return underflow;
    item=entry[front];
	return success;
}

//////////////////////////////////////////////////////////////////////////

bool queue ::empty() const                    // empty
{
	if (count==0)
  return true;

	return false;
}
                                            // End Of Q Def.
//////////////////////////////////////////////////////////////////////////
                     
                          // Def of main Fun //

//////////////////////////////////////////////////////////////////////////

void fillq(queue &q)                        //Fill Q.
{
	q_entry x;

    cout<<"Please Enter The Value Of ((X)) Then Press Enter ...  "<<endl;
    cin>>x;
	q.append(x);
	cout<<endl;

}

//////////////////////////////////////////////////////////////////////////

void print (queue & q)                      // print items as their inputs
{
	q_entry x;
	queue temp;
	while (!q.empty() )
	{
  q.retrive(x);
        q.serve();
        temp.append(x);
        cout<<x<<"\n";
	}
	while(!temp.empty() )

	{ 
      temp.retrive(x);
         temp.serve();
         q.append(x);
	}
cout<<endl<<endl;}

////////////////////////////////////////////////////////////////////////

void reverse_print (queue &q)              // print reverse .. as normal

{
	q_entry x;
	queue temp1;
	temp1=q;
	while (!q.empty() )
	{
        cout<<x<<"\n";
  q.retrive(x);
        q.serve();
	}

	q=temp1;

cout<<endl<<endl;}




/*	{
                q_entry x;
        while (!q.empty() )
  {
      q.retrive (x);
            
       	 cout<<x<<endl;
            q.serve();
  }
        
        cout<<endl<<endl;
}      */

////////////////////////////////////////////////////////////////////////

void count ( queue &q )                        // count even & odd In Q.
{
	q_entry x;
	int even_counter=0;
	int  odd_counter=0;

	if (q.retrive(x)%2==0)
	{	even_counter++;
	q.serve();}
	else 
	{	odd_counter++;
	q.serve();}

	cout<<"Even="<<even_counter<<endl;
    cout<<"Odd ="<<odd_counter<<endl;
}

//////////////////////////////////////////////////////////////////////////

                             // An Independent Fun. To Know The Size Of Q.
int size (queue &q)            
{
	q_entry x;
	int sum=0;
	queue temp;

	while (!q.empty())
	{
  q.retrive(x);
  q.serve ();
  temp.append(x);
  sum++;
	}

	while (!temp.empty())
	{
  temp.retrive(x);
  temp.serve();
  q.append(x);
	}

	return sum;
}

///////////////////////////////////////////////////////////////////////////

           //queue & q1 , queue & q2)   // fun to split Q To Even & Odd ..

void split(queue & q )
{
	q_entry x;
	queue q1 , q2;

	while (!q.empty())
  q.retrive(x);
	if (x%2==0)
	{	q1.append(x);
	q.serve();}

	else 
	{	q2.append(x);
	q.serve();}
}


//////////////////////////////////////////////////////////////////////////




void main ()
{
	queue q;
	int select;
	bool flag=true;
	while(flag)


	{
  cout<<endl<<endl;
  cout<<"###################################################################"<<endl<<endl;
  cout<<"                   Welcome To My Program On Queue HW#2  "<<endl<<endl;
      cout<<"                   This Programmed By Noor Aldeen Omari "<<endl<<endl;
        cout<<"###################################################################"<<endl<<endl;
      cout<<"     ~~~ You Can select From the Menu ... BELOW ... ~~~"<<endl<<endl;

  cout<<"[1 ]  Fill My Queue With 10 Integers . "<<endl;
  cout<<"[2 ]  Print Queue Items As Their Input Order . "<<endl;
  cout<<"[3 ]  Print Queue Items In Reverse Order ."<<endl;
  cout<<"[4 ]  Count How Many Item Even & Odd In Queue . "<<endl;
  cout<<"[5 ]  To Know The Size Of My Queue . "<<endl;
  cout<<"[6 ]  Split To Odd & Even Queue . "<<endl;
       /* cout<<"[7 ]  Remove All Occurrences Of Items From Queue ."<<endl;
        cout<<"[8 ]  Insert The Mid .. Of My Queue ."<<endl;
        cout<<"[9 ]  Find The Index Of An Element In My Queue ."<<endl;
       */ cout<<"[10]  Exit ."<<endl;

  cout<<"select "<<endl<<endl;


  cin>>select;
  cout<<endl<<endl;

  switch (select)
  {
  case 1 :fillq(q); break;
  case 2 :print(q); break;
  case 3 :reverse_print(q); break;
  case 4 :count(q); break;
  case 5 :size(q); break;
  case 6 :split(q); break;
  /*case 7 :removeitem(q); break;
        case 8 :insertmid(q); break;
  case 9 :findindex(q); break;
        */case 10:flag=false; break;
  }
	}


}

رجاءاً ... بسرعه

هذا الموضوع مغلق.

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