קבוצה ה'
האם אתה רוצה להגיב להודעה זו? אנא הירשם לפורום בכמה לחיצות או התחבר כדי להמשיך.

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

4 posters

Go down

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה? Empty אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

הודעה על ידי Cookie Monster Mon Jan 19, 2009 7:27 pm

תודה..
Embarassed

Cookie Monster
חנבצ'

מספר הודעות : 41
Join date : 26.11.08

חזרה למעלה Go down

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה? Empty Re: אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

הודעה על ידי Maor Mon Jan 19, 2009 10:35 pm

אני עשיתי ככה,
בסעיף א. - התנאי הוא אם left קטן או שווה ל right (אין אחרת, רק אם זה נכנס לפה זה עושה משהו)
מאתחל את min ו max ל A[left]

מבצע את הקריסה הזו:
minMax(A,left+1,right,min,max);

ואחר כבר 2 ifים שבודקים max וmin ואם צריך לשנות....

בסעיף ב. - יש תנאי אם left קטן ממש מright (אחרת תחזיר אמת)
ואז יש עוד if בפנים אם a[left] גדול או שווה ל a[left+1]
אם כן תחזיר:
checkDecSeq(A,left+1,right);

אחרת תחזיר שקר.

בדקתי שניהם עובדים לי.

לגבי 13 א, יש דרך לעשות את זה בלי swaping בזבזני?

Maor
חנבצ'

מספר הודעות : 44
Join date : 07.12.08

חזרה למעלה Go down

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה? Empty Re: אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

הודעה על ידי The_Imri Tue Jan 20, 2009 12:46 am

שאותו אחד יסביר גם על תרגיל 13...

The_Imri
חפרן

מספר הודעות : 53
Join date : 08.12.08

חזרה למעלה Go down

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה? Empty Re: אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

הודעה על ידי Maor Tue Jan 20, 2009 11:14 am

אין בעיה, ד.א- מישהו יכול להסביר לי מה עושים ב14?
א13 עובד אצלי הבעיה שבסעיף א' אני עושה הרבה swaping, לא מצאתי דרך יותר טובה לעשות את זה.

א- פעולה ראשונה בפונקציה int sLen = (int)(strlen(s));//gets s string real length

אחר כך if (יחיד, אין אחרת ואין אחריו כלום) התנאי sLen > 1
אני קורא לפונקציה שוב כך: reverse(&s[1]);
בגלל שלא מקבלים פויינטר ואין דרך נוחה לקדם את האינדקס במחרוזת אז אני שולח s[1] by ref
ואז במחסנית הבאה s[0] יהייה כבר האיבר השני במחרוזת. (ה& פשוט שולח לי את הכתובת של התו הבא במחרוזת)

ואז אני עושה Swaping מהאיבר שאני עומד עליו עד האיבר האחרון במחרוזת (לא כולל ה\o שימו לב).
אחרי שעושים את זה מהאיבר הראשון עד האחרון משום מה מקבלים מחרוזת כמו שביקשו בתרגיל
cyclops

Maor
חנבצ'

מספר הודעות : 44
Join date : 07.12.08

חזרה למעלה Go down

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה? Empty Re: אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

הודעה על ידי shiri Tue Jan 20, 2009 4:40 pm

יש דרך יותר קלה ל 13 א
void reverse(char s[](
{


([if(s[0

;(reverse(s+1
else
;return
;[cout<<s[0

}


נערך לאחרונה על-ידי shiri בתאריך Tue Jan 20, 2009 5:05 pm, סך-הכל נערך פעם אחת

shiri
לפלף מזדמן

מספר הודעות : 2
Join date : 20.01.09

חזרה למעלה Go down

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה? Empty Re: אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

הודעה על ידי shiri Tue Jan 20, 2009 4:46 pm

לא הבנתי אבל מה הם רצו בסעיף ב

shiri
לפלף מזדמן

מספר הודעות : 2
Join date : 20.01.09

חזרה למעלה Go down

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה? Empty Re: אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

הודעה על ידי Maor Tue Jan 20, 2009 10:00 pm

shiri כתב:לא הבנתי אבל מה הם רצו בסעיף ב

אני לא הבנתי מה עשית בסעיף א' P:
cout?
איפה את הופכת את הסדר של המחרוזת?

Maor
חנבצ'

מספר הודעות : 44
Join date : 07.12.08

חזרה למעלה Go down

אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה? Empty Re: אהלן! מישהו יכול להסביר איך עושים את תרגיל 12 ברקורסיה?

הודעה על ידי Cookie Monster Thu Jan 22, 2009 9:15 am

היי, הנה עוד דרך ל-13 א'. מוטב מאוחר מלעולם לא.. Smile

void reverse(char s[])
{
char temp;
if (strlen(s)==1)
{
return;
}
else if (strlen(s)==2)
{
temp = s[1];
s[1] = s[0];
s[0] = temp;
}
else
{
temp = s[0];
reverse(s+1); //call function from the next place

//push all characters one plase to the left
for (int i=0;i<strlen(s)-1;i++)
s[i] = s[i+1];

s[strlen(s)-1] = temp; //places the saved char in the last place in the string

}
}

כאן יש SWAP רק אם המחרוזת בגודל 2.
במקרים שהמחרוזת גדולה יותר, כל פעם האות הראשונה נשמרת, ובדרך חזרה של הרקורסיה, כל המחרוזת נדחפת מקום אחר שמאלה, והאות השמורה "מודבקת" בסוף.

Cookie Monster
חנבצ'

מספר הודעות : 41
Join date : 26.11.08

חזרה למעלה Go down

חזרה למעלה

- Similar topics

 
Permissions in this forum:
אתה לא יכול להגיב לנושאים בפורום זה