ABA


"איך אני מחזיר מפונקציה מחרוזת (C)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15051 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15051
איש-האבוקות

   18:45   16.11.08   
אל הפורום  
  איך אני מחזיר מפונקציה מחרוזת (C)  
 
   ערכתי לאחרונה בתאריך 16.11.08 בשעה 19:09 בברכה, איש-האבוקות
 
https://rotter.name/User_files/nor/492053af1e954450.txt

תודה


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  SEND\ DONT SEND לא אומר הרבה :) Net_Boy  16.11.08 19:01 1
     מצטרף, ואם אפשר תיישר עם ldan192  16.11.08 19:06 2
         ערכתי, ולא עבד לי היישור =\ איש-האבוקות 16.11.08 19:10 3
             מי לימד אותך להשתמש ב-goto |: ה-goto זה אסון בשפת C.... ldan192  16.11.08 20:22 4
                 עזוב את זה אחי... זה לא הנקודה בבעיה של התוכנית איש-האבוקות 16.11.08 20:23 5
                     אני שניה אפתח קומפיילר ואומר לך בדיוק מאין נובעת הבעיה ldan192  16.11.08 20:25 6
                         סבבה תודה אחי, ובשבילך העפתי את ה-goto =\ איש-האבוקות 16.11.08 20:26 7
                             מתקמפל ורץ תקין אצלי, לפחות במקרי הקצה שאני בדקתי ldan192  16.11.08 20:30 8
                                 אחי זה נתקל בחזרה מהפונקצייה בדקתי... זה טעות איש-האבוקות 16.11.08 20:34 9
                                     תביא את הקלטים שאתה מכניס אז. את קובץ ה-TXT + הקוארדינטות ldan192  16.11.08 21:04 10
                                         ... איש-האבוקות 17.11.08 08:30 12
                 goto הוא הכרחי בלא מעט מקרים. TTAsnn 16.11.08 22:35 11
                     ב-++C אולי, ב-C להשתמש ב-GOTO זה תכנות גרוע כי פשוט זה לא תמיד עובד:) ldan192  17.11.08 20:54 13
                         בדקת לי אחי? איש-האבוקות 17.11.08 23:14 14
                             המחשב היה אחרי פירמוט אז לא היה VS, אבל עכשיו כשיש: ldan192  18.11.08 14:01 16
                                 תודה על העזרה אחי, עכשיו עובד הreturn, עכשיו אעבור איש-האבוקות 18.11.08 14:56 18
                                 הקובץ שפירסמת נמחק מהשרת של רוטר =\ איש-האבוקות 18.11.08 16:33 19
                                     תנסה להמשיך לראות איך אתה מסתדר. אם תראה שלא הולך כשאתפנה אראה פה ldan192  18.11.08 20:16 20
                                         הצלחתי, אבל לא בbacktracking (לא יודע עדיין איך לעשות איש-האבוקות 18.11.08 23:07 21
                                             אבל גם אתה לא מקבל מסלול בסוף, לא? ldan192  19.11.08 18:00 22
                                                 מקבל נקודה בנק' הסיום, אתה התכוונת שזה יעשה לי מסולול ב איש-האבוקות 19.11.08 18:12 23
                                                     מן הסתם. אחרי הכל זו המטרה? או שאתה רוצה לבדוק רק אם 2 נקודות קשירות? ldan192  19.11.08 19:36 24
                                                         סבבה אני עובד על זה, ערכתי - כנס שניה איש-האבוקות 19.11.08 19:41 25
                                                             אתה יכול להשתמש בנקודה, אבל אתה מאפשר ldan192  19.11.08 23:03 27
                                                                 סבבה תודה איש-האבוקות 20.11.08 07:10 28
                         למה אתה מתכוון לא תמיד עובד?! אחי, זה עובד וזה הכרחי. TTAsnn 18.11.08 11:15 15
                             לא ב-C. לפעמים הוא מתעלם מתוויות. זו מחלה ידועה :\ ldan192  18.11.08 14:03 17
                                 ה''מחלה'' שאתה מדבר עליה היא אולי ספציפית לקומפיילר. TTAsnn 19.11.08 21:22 26
  פשוט מצביע לאיבר הראשון של המערך char... sharkk 20.11.08 23:18 29

       
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   19:01   16.11.08   
אל הפורום  
  1. SEND\ DONT SEND לא אומר הרבה :)  
בתגובה להודעה מספר 0
 
   וקצת קשה לראות מה עשית בקוד , סה"כ הקטע קוד נראה תקין לגמרי
לכן או שתפרסם את השגיאה במפורט או שתפרסם את הקטע קוד המלא

(עדיף את שניהם)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   19:06   16.11.08   
אל הפורום  
  2. מצטרף, ואם אפשר תיישר עם  
בתגובה להודעה מספר 1
 
ערכתי לאחרונה בתאריך 16.11.08 בשעה 19:06 בברכה, ldan192
 


בברכה,
עידן


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

   19:10   16.11.08   
אל הפורום  
  3. ערכתי, ולא עבד לי היישור =\  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   20:22   16.11.08   
אל הפורום  
  4. מי לימד אותך להשתמש ב-goto |: ה-goto זה אסון בשפת C....  
בתגובה להודעה מספר 3
 


בברכה,
עידן


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

   20:23   16.11.08   
אל הפורום  
  5. עזוב את זה אחי... זה לא הנקודה בבעיה של התוכנית  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   20:25   16.11.08   
אל הפורום  
  6. אני שניה אפתח קומפיילר ואומר לך בדיוק מאין נובעת הבעיה  
בתגובה להודעה מספר 5
 


בברכה,
עידן


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

   20:26   16.11.08   
אל הפורום  
  7. סבבה תודה אחי, ובשבילך העפתי את ה-goto =\  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   20:30   16.11.08   
אל הפורום  
  8. מתקמפל ורץ תקין אצלי, לפחות במקרי הקצה שאני בדקתי  
בתגובה להודעה מספר 7
 
יש לך את הקובץ c:\labyrinth.txt על הכונן?
תשים לב שאתה צריך לבדוק שהמשתנה labyrinth!=NULL לפני שאתה נכנס ללולאה.


בברכה,
עידן


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

   20:34   16.11.08   
אל הפורום  
  9. אחי זה נתקל בחזרה מהפונקצייה בדקתי... זה טעות  
בתגובה להודעה מספר 8
 
   ערכתי לאחרונה בתאריך 16.11.08 בשעה 20:36 בברכה, איש-האבוקות
 
בreturn, לא מבין למה זה לא מצליח להחזיר string, אם אני משנה את printf("%s\n" ,check2); ל-%d (ירשום לי 13) או %c (יעשה אנטר) במקום ה-%s זה עובד, זה כאילו מחזיר לי אנטר במקום את המחרוזת

ותודה על התזכורת לעשות את הבדיקה עם שונה מ-null


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   21:04   16.11.08   
אל הפורום  
  10. תביא את הקלטים שאתה מכניס אז. את קובץ ה-TXT + הקוארדינטות  
בתגובה להודעה מספר 9
 


בברכה,
עידן


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

   08:30   17.11.08   
אל הפורום  
  12. ...  
בתגובה להודעה מספר 10
 
   https://rotter.name/User_files/nor/49210f6e692b4e32.txt

קלטים:
x_start = 6
y_start = 0

x_end = 35
y_end = 16


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

   22:35   16.11.08   
אל הפורום  
  11. goto הוא הכרחי בלא מעט מקרים.  
בתגובה להודעה מספר 4
 
   ערכתי לאחרונה בתאריך 16.11.08 בשעה 22:35 בברכה, TTAsnn
 
בד''כ נקיון אחרי הקצאת זכרון בפונקציות.
הסתייגות:
ראיתי איפה הוא השתמש בזה, ושם זה ממש לא נכון...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   20:54   17.11.08   
אל הפורום  
  13. ב-++C אולי, ב-C להשתמש ב-GOTO זה תכנות גרוע כי פשוט זה לא תמיד עובד:)  
בתגובה להודעה מספר 11
 


בברכה,
עידן


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

   23:14   17.11.08   
אל הפורום  
  14. בדקת לי אחי?  
בתגובה להודעה מספר 13
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   14:01   18.11.08   
אל הפורום  
  16. המחשב היה אחרי פירמוט אז לא היה VS, אבל עכשיו כשיש:  
בתגובה להודעה מספר 14
 
(השתמשתי בקוארדינטות 6,2 עד 6,3)
א. check2 - למה אתה מאתחל אותו במאלוק אם אחרי זה אתה מאתחל את str בפונקציית הרקורסיה?
ב. למה להשתמש בכלל ב-malloc מלכתחילה למכרוזת קבועה? הרבה יותר נכון להשתמש ב-typedef enum במקרה הזה ולא לזרוק מכיוון אחד לשני זכרונות מוקצים שאח"כ גם לא משוחררים ע"י FREE.
ג. שים לב שאתה אף פעם לא נכנס לסקופ של if (y == y_end && x == x_end) (ולכן אתה מנסה להדפיס NULL ומקבל ריסוק).
ד. וזו הסיבה האמיתית - הקוד פשוט לא פועל נכון ולא עושה מה שהתכוונת אליו.
הוא בודק כל פעם צד ימינה, צעד מעלה, צעד שמאלה, צעד למטה (לאו דווקא בסדר הזה) ומסמן נקודה במקום הרווח.
אבל מי אמר שאם תלך למעלה הפעם אתה לא תחסום לעצמך את הדרך חזרה לדרך ללא מוצא?
אתה בעצם רצית שהתוכנית תמצא פתרון מינימלי או פתרון כלשהו?
הטריק האמיתי הוא לא לעשות מה שעשית (לסמן נקודה במקום הרווח) אלא להשאיר רווח. תן לו לטעות כמה פעמים בדרך - אבל גם תאפשר לו ללכת אחורה כשהוא טועה.
בסוף בטוח הוא יגיע לפתרון (בהנחה שבאמת יש פתרון כזה).
אתה יכול לתת תנאי עצירה גם שימנע מהקוד לעבור על קוארדינטות ההתחלה יותר מ-8 פעמים (אלכסונים, מאונך ומאוזן), אבל עדיין זה לא קוד אופטימלי.

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


בברכה,
עידן


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

   14:56   18.11.08   
אל הפורום  
  18. תודה על העזרה אחי, עכשיו עובד הreturn, עכשיו אעבור  
בתגובה להודעה מספר 16
 
   לעבוד על הרקורסיה


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

   16:33   18.11.08   
אל הפורום  
  19. הקובץ שפירסמת נמחק מהשרת של רוטר =\  
בתגובה להודעה מספר 16
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   20:16   18.11.08   
אל הפורום  
  20. תנסה להמשיך לראות איך אתה מסתדר. אם תראה שלא הולך כשאתפנה אראה פה  
בתגובה להודעה מספר 19
 


בברכה,
עידן


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

   23:07   18.11.08   
אל הפורום  
  21. הצלחתי, אבל לא בbacktracking (לא יודע עדיין איך לעשות  
בתגובה להודעה מספר 20
 
   את זה) או לפחות לא שידוע לי שבשיטה הזאת
כאילו עשיתי בלי נקודות הכל רק רווחים, ולא נתקע


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   18:00   19.11.08   
אל הפורום  
  22. אבל גם אתה לא מקבל מסלול בסוף, לא?  
בתגובה להודעה מספר 21
 


בברכה,
עידן


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

   18:12   19.11.08   
אל הפורום  
  23. מקבל נקודה בנק' הסיום, אתה התכוונת שזה יעשה לי מסולול ב  
בתגובה להודעה מספר 22
 
   בסוף


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   19:36   19.11.08   
אל הפורום  
  24. מן הסתם. אחרי הכל זו המטרה? או שאתה רוצה לבדוק רק אם 2 נקודות קשירות?  
בתגובה להודעה מספר 23
 


בברכה,
עידן


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

   19:41   19.11.08   
אל הפורום  
  25. סבבה אני עובד על זה, ערכתי - כנס שניה  
בתגובה להודעה מספר 24
 
   ערכתי לאחרונה בתאריך 19.11.08 בשעה 19:48 בברכה, איש-האבוקות
 
רק לא הבנתי איך אני אמור להראות את הדרך עם אני משאיר רווחים, אחרי שאני מסיימים לחזור את הדרך אחורה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   23:03   19.11.08   
אל הפורום  
  27. אתה יכול להשתמש בנקודה, אבל אתה מאפשר  
בתגובה להודעה מספר 25
 
לו לדרוס את הצעד גם אם יש נקודה (ולאו דווקא אם רק רווח).
רוב הסיכויים שבסוף תקבל מסלול מלא (או שלא) - אבל זה הפתרון הכי פשוט מבחינת התקדמות שתעשה מה שרצית.


בברכה,
עידן


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

   07:10   20.11.08   
אל הפורום  
  28. סבבה תודה  
בתגובה להודעה מספר 27
 
  


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

   11:15   18.11.08   
אל הפורום  
  15. למה אתה מתכוון לא תמיד עובד?! אחי, זה עובד וזה הכרחי.  
בתגובה להודעה מספר 13
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   14:03   18.11.08   
אל הפורום  
  17. לא ב-C. לפעמים הוא מתעלם מתוויות. זו מחלה ידועה :\  
בתגובה להודעה מספר 15
 


בברכה,
עידן


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

   21:22   19.11.08   
אל הפורום  
  26. ה''מחלה'' שאתה מדבר עליה היא אולי ספציפית לקומפיילר.  
בתגובה להודעה מספר 17
 
   הרי פירוש השפה הוא כמובן תפקידו של הקומפיילר, ואם אתה משתמש בקומפיילר באגי וגרוע, יכולים לקרות מקרים כאלה, בכל קומפיילר נורמלי זה לא אמור לקרות, ולכן זה ממשלא גורף לגבי C, וזה אפילו לא רלוונטי לדיון.

GCC לדוגמא עובד מעולה עם goto ואני לא יודע עם איזה קומפיילר אתה עובד, אבל נראה לי שהגיע הזמן שתחליף... ד"א, לא מצאתי שום דבר על זה בגוגל.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sharkk
חבר מתאריך 2.9.02
1306 הודעות
   23:18   20.11.08   
אל הפורום  
  29. פשוט מצביע לאיבר הראשון של המערך char...  
בתגובה להודעה מספר 0
 
  


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

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

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



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