פורסם 2006 במאי 1219 שנים נדמה לי או שהתנאי בלולאה הפוך?ואגב, list.IsEmpty (בלי הסוגריים) זה ערך שהוא תמיד חיובי (מצביע לפונקציה).
פורסם 2006 במאי 1219 שנים מחבר אז ככה-היה תנאי כפול בלולאה(גם ! וגם ==0) ...עקבתי אחרי התכנית עם הדיבגגר,(איך שלא כותבים את זה) וראיתי שבפונקציה, רשימה list מעבירה לtemp את המספר 5 -שהוא המספר הראשון שהיה צריך להיות ברשימה, ואז יוצאת מהתכנית בגלל הreturn true ובכל זאת כשאני חוזרת לתכנית הראשית -רשימה temp ריקה אפילו את המספר 5 אין בה!!!!!מה עושים??????????????
פורסם 2006 במאי 1219 שנים נדמה לי או שהתנאי בלולאה הפוך? ואגב, list.IsEmpty (בלי הסוגריים) זה ערך שהוא תמיד חיובי (מצביע לפונקציה). אוי אני מסמיק מבושה! איזה טעות דבילית, סליחה. אבל בגלל זה אמרתי פסודו-קוד 1) לא ברור לי מה זה: if(!temp.FirstElm()) return false; // error אני מניח שהכוונה היא לבדוק האם הכנסת האיבר לרשימה temp הצליחה? 2) למה לא לרשום את תנאי הלולאה ככה: while ( list.IsEmpty() != 0 ) 3) ואם כבר עובדים ב-C++, למה IsEmpty מחזיר int? עדיף שיחזיר bool.
פורסם 2006 במאי 1619 שנים מחבר תודה לכל המגיבים אבל התכנית עדיין לא פועלת ככה היא עכשיו:אשמח לתשובה שתעזור, מה עושים כאן???? //תרגיל 3: פונקציה המחזירה רשימה ברוורס#include <iostream>#include <conio.h>#include "Link.h"#include "List.h"using namespace std;template <class T>List<T> Revers(List<T> &list, List<T> &temp){ //List<int>temp;//הצהרה על רשימת עזר while(!list.IsEmpty()) { temp.Add(list.RemoveFirst()); } return temp;}void main(){ List<int>list,temp; int i=0; while(i<9)//הצבת ערכים ברשימה { list.Add(i*2+5); i++; } cout<<"list is: "; list.print();//הדפסת הרשימה temp=Revers(list,temp);//קריאה לפונקציה להפיכת הרשימה cout<<"\n\nlist revers is: "; temp.print();//הדפסת הרשימה ההפוכה getche();}/**/
פורסם 2006 במאי 1619 שנים 1. פונקציית Add מוסיפה מהתחלה או מהסוף?2. את אמורה לשנות את הקלט? (כי כמו שזה כתוב - את מרוקנת את רשימת הקלט)3. אין טעם בזה שהפונקציה מחזירה את הרשימה (כי את במילא משנה את temp).במקרה שאופרטור ההשמה לא מגן מפני השמה עצמית, יש סיכוי שאת מוחקת לעצמך את האובייקט.
פורסם 2006 במאי 1619 שנים מחבר אז ככה:1.פונקצית Add מוסיפה איבר מההתחלה וגם מוחקת איבר ממהתחלה=יש גישה רק לאיבר הראשון בעזרת מצביע first ->הרשימה מייצגת מחסנית.2.אני לא אמורה לשנות את הקלט- אני שולחת לפונקציה רשימה, הפונקציה מחזירה לתכנית את הרשימה ברוורס(אני לא חייבת לשמור על הרשימה המקורית), והתכנית הראשית מדפיסה את הרשימה(ברוורס שקבלתי מהפונקציה).3.לא הבנתי מה כתוב.
פורסם 2006 במאי 1619 שנים אם אתה שולח בתור REF אתה לא צריך להחזיר ערך. תשנה את הערך המוחזר ל- VOID(כלום).
פורסם 2006 במאי 1719 שנים לגבי 3 - אם אופרטור ההשמה לא מתחיל במשהו כמוif (this == otherObject)return thisואח"כ את מוחקת את המצביע לראש הרשימה הנוכחית, את בעצם מוחקת זיכרון שאת צריכה.
פורסם 2006 במאי 1719 שנים מחבר בגלל שבתכנית הראשית רשמתי temp=Revers(list,temp); אז מה שפונקציה מחזירה אמור להכנס לרשימה temp ריקה אחרת!!!!!!אבל זה לא קורה .איך אני יוצרת מצב שתחזור אלי הרשימה ההפוכה אם הפונקציה היא void כמו שאמרת?
פורסם 2006 במאי 1719 שנים כשאת מעבירה פרמטר by reference, המשתנה שאת מחזיקה בתוך הפונקציה הוא לא העתק של המשתנה שהעברת בתוך פרמטר, אלא ממש אותו אותו אובייקט.כשאת משנה אותו - את משפיעה על הרשימה.לכן מספיק שתשני את temp כדי שהרשימה תשתנה.לכן גם זה אומר שכמו שהפונקציה ממומשת, הרשימה שאת מעבירה בפרמטר הראשון תהיה ריקה ביציאה מהפונקציה.
פורסם 2006 במאי 1719 שנים מחבר לא אכפת לי שהיא ריקה!!!!!! הרי אני רוקנתי אותה!!!השאלה היא מה אני צריכה לשנות בקוד שרשמתי על-מנת שהתכנית תדפיס בסוף את הרשימה ברוורס????????????
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.