פורסם 2011 באוגוסט 1214 שנים הפעולה קולטת מספר שלם X, ומדפיסה משולש של כוכביות ובו X שורות. בשורה הראשונה תהיה כוכבית אחת , אח"כ 2 וכו'.למשל עבור הקלט 4 יודפס: **********זה הפעולה שאני עשיתי:public static string stars(int num) { return starshelp(num, num); } public static string starshelp(int num,int num2) { if (num == 0) return ""; else for (int i = 0; i < num2 + 1 - num; i++) { Console.Write("*"); } Console.WriteLine(""); return starshelp(num - 1,num2); }הפעולה הזאת עובדת כמו שצריך , אבל יש בעיה אחת בתרגיל אמור לכתוב פעולה אחת ואני כתבתי 2(כתבתי גם "פעולת מעטפת " כדי שהמשתמש לא יצטרך להכניס את המספר פעמיים). יש דרך אחרת לפתור את זה מבלי להשתמש בפעולת מעטפת?? תודה מראש
פורסם 2011 באוגוסט 1214 שנים עבור קלט של num לפונקצייה stars תיקרא קודם ל-stars(num-1) ורק אז תדפיס num כוכביות.ואז זה יעבור בפונקצייה אחת.
פורסם 2011 באוגוסט 1214 שנים התכוונתי לזה: static String stars(int num) { String ans = ""; if (num == 0) { return ans; } ans = stars(num - 1); for (int i = 0; i < num; i++) { ans += "*"; } ans += "\n"; return ans; }
פורסם 2011 באוגוסט 1214 שנים השורה מוסיפה ירידת שורה.שים לב שהתוכנית שכתבת מקודם יש בה בעייה קטנה - היא תמיד מחזירה "" (מחרוזת ריקה).אז או שאתה מחזיר מחרוזת שהיא התוצאה של מה שרצית או שתעשה פונקצייה שמחזירה void ותדפיס.
פורסם 2011 באוגוסט 1214 שנים מחבר אז למה אם אני מחליף את השורה הזאת ל Console.WriteLine(""); -התכנית לא עובדת כראוי??
פורסם 2011 באוגוסט 1214 שנים כי אז אתה לא מכניס את ירידת השורה למחרוזת שהיא התוצאה.זה או לעשות את מה שאני עשיתי או לעשות שהפונקציית תחזיר void ותמיד תדפיס (כלומר הדפסות גם בתוך ה-for).
פורסם 2011 באוגוסט 1214 שנים מחבר יש לי עוד תרגיל אחד שאני לא מצליח... הפעם הפעולה אמורה להחזיר עבור הקלט 3 : *** ** * ** *** אין לי מושג איך אני אמור לעשות את זה :nixweiss: אני אודה לך אם תוכל להדריך אותי כיצד להגיע לפתרון.
פורסם 2011 באוגוסט 1214 שנים התרגיל השני יותר קלאסי מבחינת רקורסיה. שים לב שאחרי הקריאה הרקורסיבית המטודה ממשיכה הלאה.בדגמא שניתנה לך כאן כביכול מתבצע רק מה שאחרי הקריאה הרקורסיבית. תוסיף הדפסת כוכביות לפניה.
פורסם 2011 באוגוסט 1314 שנים static String stars(int num) { String ans = ""; if (num == 0) { return ans; } for (int i = 0; i < num; i++) { ans += "*"; } ans += "\n"; ans += stars(num - 1); for (int i = 0; i < num; i++) { ans += "*"; } ans += "\n"; return ans; }
פורסם 2011 באוגוסט 1314 שנים את זה בדיוק אני לא יודע איך לעשות...אז כדאי שתחזור לבסיס. הדפסה על המסך זו פעולה בסיסית ביותר.
פורסם 2011 באוגוסט 1314 שנים מחבר תקרא לי מטומטם(והרבה כבר קראו לי ככה אז אל תתבייש...) אבל לא הצלחתי להבין את הפעולה הזאת... דבר נוסף : חזרתי לתרגיל הראשון ושמתי לב שיש לי איזושי טעות בהבנת הפעולה אבל אני לא יודע איפה היא.ניסתי להציב 2 וזה(התמונה) מה שיצא לי... איפה הטעות שלי?? [attachment deleted by admin]
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.