עיצוב תוכנה כיתה יא

nicol17

New member
עיצוב תוכנה כיתה יא

שלום!
נתונה המשימה הבאה:
כתוב פעולה חיצונית (למחלקה QUEUE) המקבלת כפרמטר תור מספרים שלמים הממוין בסדר עולה מראש התור עד הסוף ומספר נוסף . על הפעולה להדפיס את המספר לתור כך שהוא ישאר ממוין .

כתבתי את הפעולה להלן:
public static void memuyan(Queue<Integer> q, int x){//משימת כיתה ראשונה
Queue<Integer> h=new Queue();
while(!q.isEmpty() && x>q.head()){
h.insert(q.remove());
}
h.insert (x);
while (!q.isEmpty()){
h.insert(q.remove());
}
while (!h.isEmpty())
q.insert(h.remove());
}

האם מישהו יוכל לעזור ולהגיד לי מדוע זה לא נכון?
 

jsaada100

New member
בירור

שלום לך ,

הקוד שכתבת אינו ברור כ"כ, ואני מציע כי תצרף קובץ PDF או תמונה שנוכל להסתכל בו בצורה ברורה ונהירה יותר.

אגב - האם הידרת את התכנית? מה המהדר רשם לך בהודעת השגיאה ?

יהונתן
 
על פניו האלגוריתם נראה נכון

אולי צריך לבדוק מקרי קצה מסויימים (תור ריק, X אמור להכנס אחרון או ראשון וכדומה...)
בכל אופן, אני לא מכיר את היישום הספציפי הזה של תור.
זה מה שאני הצלחתי לעשות בקוד שלך ע"מ שייתקמפל (ויעבוד, מדובר על ויזואל סטודיו 2010)



static void memuyan(queue<int> q, int x){
//משימת כיתה ראשונה
queue<int> h ;

while(!q.empty() && x>q.front()){
int val = q.front();
q.pop();
h.push(val);
}
h.push(x);
while (!q.empty()){
int val = q.front();
q.pop();
h.push(val);
}
while (!h.empty())
{
int val = h.front();
h.pop();
q.push(val);
}
}
 
למעלה