ABA


"עזרה בתרגיל רקורסיבי קצר (JAVA)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10246 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10246
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   17:50   31.01.11   
אל הפורום  
  עזרה בתרגיל רקורסיבי קצר (JAVA)  
 
   Given a string, compute recursively (no loops) a new string where all appearances of "pi" have been replaced by "3.14".

changePi("xpix") → "x3.14x"
changePi("pipi") → "3.143.14"
changePi("pip") → "3.14p"

ז"א צריך לתכנת פונקציה שמקבל מחרוזת כלשהיא ובצורה רקורסיבית ללא לולאות
בודקת אם נמצא מחרוזת פנימית של "pi" אז הוא משנה את זה ל"3.14"

החשיבה שלי בתרגיל הזה הולכת
בחשיבה של לעשות רקורסיית זנב וכל פעם לבדוק את שני התווים האחרונים המחרוזת ואם כן אז להחזיר 3.14 אבל הכתיבה של זה לא מסתדרת לי

זה מה שעשיתי עד כה

https://rotter.name/User_files/nor/4d46d9d817775905.txt

ואיכשהו זה לא מסתדר לי מישהו יכול לעזור לי?

נ.ב איך שמים קוד בסוגרים אפורים כאלה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  הייתי מפשט את זה קצת XpDuDe  31.01.11 18:18 1
     כלומר eminem 31.01.11 19:00 2
         כן הוא ילך זוג זוג מההתחלה וישווה ל-pi. XpDuDe  31.01.11 19:02 3
     קצת בעייתי הפסאודו-קוד שלך... אם הרצף pi Zippo  31.01.11 21:19 7
         נכון, התבלבלתי בניסוח. הכוונה בשורה 2.1 היא, XpDuDe  31.01.11 21:48 8
  הרעיון שלך נכון. ככה מממשים : ufo  31.01.11 19:03 4
     תודה רבה... לא ידעתי שקיימת כזאת פונ' endswith ב-api eminem 31.01.11 19:51 5
     הפתרון נכון, אבל קצת תיקונים XpDuDe  31.01.11 20:16 6

       
XpDuDe 
חבר מתאריך 16.5.10
1046 הודעות
   18:18   31.01.11   
אל הפורום  
  1. הייתי מפשט את זה קצת  
בתגובה להודעה מספר 0
 
   משהו בסגנון
1. אם המילה שווה ל-pi
1.1. החזר 3.14
2. אחרת, אם אורך המילה גדול מ-2
2.1 החזר changePi של 2 התווים הראשון + changePi של יתר התווים
3. אחרת, החזר את המחרוזת


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   19:00   31.01.11   
אל הפורום  
  2. כלומר  
בתגובה להודעה מספר 1
 
   אתה בעצם "חותך" אותו מההתחלה ולא מהסוף עד שהוא מגיע למחרוזת באורך של 2?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
XpDuDe 
חבר מתאריך 16.5.10
1046 הודעות
   19:02   31.01.11   
אל הפורום  
  3. כן הוא ילך זוג זוג מההתחלה וישווה ל-pi.  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות
   21:19   31.01.11   
אל הפורום  
  7. קצת בעייתי הפסאודו-קוד שלך... אם הרצף pi  
בתגובה להודעה מספר 1
 
מופיע באינדקס אי-זוגי, אתה תחתוך אותו באמצע...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
XpDuDe 
חבר מתאריך 16.5.10
1046 הודעות
   21:48   31.01.11   
אל הפורום  
  8. נכון, התבלבלתי בניסוח. הכוונה בשורה 2.1 היא,  
בתגובה להודעה מספר 7
 
   לעשות changePi ל2 התווים הראשונים + changePi למחרוזת בלי התו הראשון


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ufo  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.3.02
2725 הודעות, 2 פידבק
   19:03   31.01.11   
אל הפורום  
  4. הרעיון שלך נכון. ככה מממשים :  
בתגובה להודעה מספר 0
 
  

public static String changePi(String str) {
if (str.length()<2) {
return str;
}
else if(str.endsWith("pi") && str.length() == 2) {
return "3.14";
}
else if (str.endsWith("pi")) {
return changePi(str.substring(0,str.length()-2)) + "3.14";
}
else {
return changePi(str.substring(0, str.length()-1)) + str.charAt(str.length()-1);
}
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   19:51   31.01.11   
אל הפורום  
  5. תודה רבה... לא ידעתי שקיימת כזאת פונ' endswith ב-api  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
XpDuDe 
חבר מתאריך 16.5.10
1046 הודעות
   20:16   31.01.11   
אל הפורום  
  6. הפתרון נכון, אבל קצת תיקונים  
בתגובה להודעה מספר 4
 
   ב-if השני ניתן להשתמש פשוט ב-equals ואז לא צריך לבדוק את האורך,
ובכללי, לדעתי עדיף לבחור פתרון בלי יותר מידי פונקציות api,
הוא בתחילת הלימודים כנראה, ועדיף רקורסיה "נקייה",
ולדעתי עם endswith זה קצת מאבד את זה, כי הפונקציה עצמה "חותכת" את המחרוזת, (נגיד אם היה פה replace/replaceall זה עוד יותר היה מפריע).

בקיצר הפתרון טוב אבל אני חושב שהפתרון שהצעתי בתגובה הראשונה יותר מתאים לדרישות רקורסיה, בהצלחה :]


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net