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

[ تمت الإجابة ]إجراء عدة عمليات على الطابور

بدأه naif9009 في 3 ديسمبر 2012 · 5 رد · 556 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الســــلام عليكم :

أخواني وأخواتي :

أنا أدرس مادة هياكل البيانات .. ، وعملت برنامج ولكني لأ أعرف أين الخطأ فيه

أتمنى مساعدتي :

البرنامج الذي عملته :



#ifndef INTQUEUE_H
#define INTQUEUE_H
class IntQueue
{
private:
int *queueArray;
int queueSize;
int front;
int rear;
int numItems;
public:
IntQueue(int);
~IntQueue(void);
void enqueue(int);
void dequeue(int &);
bool isEmpty(void);
bool isFull(void);
void clear(void);
};

#include <iostream.h>
#include "IntQueue.h“

//*************************
// Constructor *
//*************************

IntQueue::IntQueue(int s)
{
queueArray = new int;
queueSize = s;
front = 0;
rear = 0;
numItems = 0;
}
IntQueue::~IntQueue(void)
{
delete [] queueArray;
}

void IntQueue::enqueue(int num)
{
if (isFull())
cout << "The queue is full.\n";
else
{
// Calculate the new rear position
rear = (rear + 1) % queueSize;
// Insert new item
queueArray[rear] = num;
// Update item count
numItems++;
}
}
void IntQueue::dequeue(int &num)
{
if (isEmpty())
cout << "The queue is empty.\n";
else
{
// Move front
front = (front + 1) % queueSize;
// Retrieve the front item
num = queueArray[front];
// Update item count
numItems--;
}
}

bool IntQueue::isEmpty(void)
{
bool status;

if (numItems)
status = false;
else
status = true;

return status;
}
void IntQueue::clear(void)
{
front = queueSize - 1;
rear = queueSize - 1;
numItems = 0;
}
#include <iostream.h>
#include "intqueue.h“

void main(void)
{
IntQueue iQueue(5);

cout << "Enqueuing 5 items...\n";
for (int x = 0; x < 5; x++)
iQueue.enqueue(x);

cout << "Now attempting to enqueue again...\n";
iQueue.enqueue(5);

cout << "The values in the queue were:\n";
while (!iQueue.isEmpty())
{
int value;
iQueue.dequeue(value);
cout << value << endl;
}
}

طبعاً كل هذا العمل ببرنامج Borland C++ وهو برنامج شبيه بالــ C++

أتمنى المساعده وشكراً

تم تعديل هذه المشاركة بواسطة naif9009 في 3 ديسمبر 2012 في 03:03

#3

ألف شكر عزيزي ..

أنا عملت هآلبرنامج // المشكله لما أدور الخطأ ما يطلع لي شي

لكن يطلع لي كما في الصورة :

file618266846.png

#4

أولا أعتقد أن كاتب الكود قام بتقسيمه إلى ملف رأسي (Header File) و ملف رئيسي (Main File) و بالتالي يجب عليك فصل الملفين.

ثانيا, الدالة isFull تم الإعلان عنها لكن لم يتم تعريفها.

#5

تصحيح الكود : (قمتُ بدمج محتوى ملف الــ Header داخل ملف الــ Main و إضافة تعريف مختصر للدالة isFull)

#include <iostream.h>

class IntQueue {
private:
    int *queueArray;
    int queueSize;
    int front;
    int rear;
    int numItems;

public:

    IntQueue(int s) {
        queueArray = new int;
        queueSize = s;
        front = 0;
        rear = 0;
        numItems = 0;
    }

    ~IntQueue(void) {
        delete [] queueArray;
    }

    void enqueue(int num) {
        if (isFull())
            cout << "The queue is full.\n";
        else {
            // Calculate the new rear position
            rear = (rear + 1) % queueSize;
            // Insert new item
            queueArray[rear] = num;
            // Update item count
            numItems++;
        }
    }

    void dequeue(int &num) {
        if (isEmpty())
            cout << "The queue is empty.\n";
        else {
            // Move front
            front = (front + 1) % queueSize;
            // Retrieve the front item
            num = queueArray[front];
            // Update item count
            numItems--;
        }
    }

    int isFull(void) {
        return numItems == queueSize;
    }

    int isEmpty(void) {
        int status;

        if (numItems)
            status = 0;
        else
            status = 1;

        return status;
    }

    void clear(void) {
        front = queueSize - 1;
        rear = queueSize - 1;
        numItems = 0;
    }
};

int main(void) {
    IntQueue iQueue(5);

    cout << "Enqueuing 5 items...\n";
    for (int x = 0; x < 5; x++)
        iQueue.enqueue(x);

    cout << "Now attempting to enqueue again...\n";
    iQueue.enqueue(5);

    cout << "The values in the queue were:\n";
    while (!iQueue.isEmpty()) {
        int value;
        iQueue.dequeue(value);
        cout << value << endl;
    }
    return 0;
}

بالتوفيق.

#6

الله يوفقك دنيا وآخرهـ ...

تم فهم التعديل

مع تمنتياتي لك بالتوفيق

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

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

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

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

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