
05-09-2007, 16:18
|
|
|
|
חבר מתאריך: 30.07.05
הודעות: 949
|
|
טוב, אחרי מעבר קצר אני חושב שהצלחתי לסדר את הקוד שלך...
את הבעיה שלך לא מצאתי בו, אבל מצאתי כמה טעויות:
קוד:
#include <iostream>//line
using namespace std;//line
const int SIZE=10;//line
template <class QType>//line
class queue {//line
QType q[SIZE];//line
int sloc,rloc;//line
public://line
queue() { sloc = rloc = 0;}//line
void qput(QType i);//line
QType qget();//line
};
template <class QType> void queue<QType>::qput(QType i)//line
{
if(i==SIZE)//line
{
cout << "Queue is full\n";//line
return;//line
}
sloc++;//line
q[sloc] = i;//line
}
template <class QType> QType queue<QType>::qget()//line
{
if(rloc == sloc)//line
{
cout << " Buffer under flow\n";//line
return 0;//line
}
rloc++;//line
return q[rloc]; //line
}
********************************* main ********************************
void main() // main
{
queue <int> ob; //line
}
זה הסידור שהגעתי אליו...
עכשיו ככה:
1) אין הערה על הכוכביות ב-MAIN... הקומפיילר לא ממש מבין מה אתה רוצה ממנו..
2) אין סולמית על ה-include... הוא לא מסוגל לזהות את פקודת ה-preproccessor...
3) פונק' ה-main חייבת להיות מסוג int. פונק' main שהיא void היא שגיאה... כמו כן הפונק' צריכה להחזיר 0 במקרה של הצלחה....
4)אחרי 3 התיקונים לעיל, התוכנית מתקמפלת ורצה...
עכשיו בקשר לקוד שלך עצמו......
אני לא סגור על הרמה שלך ב-++c או היכן למדת, ואני לא מתכוון להגיב על העיצוב עצמו שהוא בצורת מערך, אבל אני כן אציין לפחות משהו אחד קטן שנורא הפריע לי בקוד שלך:
ב-Constructor שלך, לא השתמשת ברשימת איתחול אלא כתבת את הקוד בתוך הפונק' עצמה...
למעשה אתה גרמת לקומפיילר לבצע פה עבודה כפולה - גם יצירה של 2 המשתנים: sloc,rloc וגם מאוחר יותר לאתחל אותם לאפסים...
הקוד אמור היה להראות ככה:
קוד:
queue() : sloc(0), rloc(0) { }//line
זה קוד ++C נכון...
בנוסף, לדעתי יש לך שגיאה לוגית בפונק' qput...
אולי לא הבנתי את כוונתך, כי אין תיעוד, אבל למיטב הבנתי, i הוא העצם החדש שאמור להכנס לתוך התור שלך...
בצורה כזו אין משמעות ל- if(i==SIZE)
שכן מה שקורה פה הוא שאם במקרה ה-i שלך שווה לגודל המערך, הוא ידפיס שהתור מלא.
אגב, אתה גם מניח לך פה ב-template class שהוא עובד רק על int, אחרת ההשוואה הזו חסרת משמעות לחלוטין.....
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.
|