פורסם 2005 באוקטובר 720 שנים אני למדתי שנה שעברה פסקלעברתי בית ספר ועכשיו אני אמור ללמוד Cאני בכיתה יא'יש למישהו אתר שמשווה בין פסקל ל- C או דרך לימוד מהירה וקלה?אני לא מצליח לקלוט נשום דבר ב- C ויש לי עוד שבועיים מבחן!ועכשיו לשאלה שפתחתי עליה תרדהמורה הביאה לנו בעיה ברקורסיה (מישהו יכול להסביר לי מה זה כי לא ממש הבנתי את ההסברים שלה...)השאלה היא כך:לקלוט מספר ארוך ושלם וליכתוב כמה פונקציות רקורסיות לחישובים הבאים:1. לחשב כמה ספרות יש במספר2. לחשב סכום של ספרות3. כמה ספרות אי זוגיות יש במספר* האנחה:המספר גדול מ-0תודה רבה לעוזרים!
פורסם 2005 באוקטובר 820 שנים המעבר מפסקל ל- C לא צריך להיות קשה, כמעט כל הדברים שיש בפסקל גם יש ב- C. (חוץ מ- sets, מערכים שמתחילים ב- ordinal type כלשהו ומשפט case נוח)רקורסיה זו פונקציה שבשלב מסוימת קוראת לעצמה.פתרון ברקורסיה מחלק את הבעיה לחלקים קטנים יותר, מצרף את הפתרון של החלקים ובונה מהם את הפיתרון הגדול יותר. (בהתחלה זה נראה קצת מוזר, אבל אח"כ זה הופך למשהו מאוד טבעי).במקרה שלך, שני החלקים של הבעיה הם "הספרה הנוכחית" ו"שאר הספרות".למשל חישוב סכום הספרות יכול להיות פונקציה שלוקחת בתור פרמטרים: סכום הספרות "עד עכשיו", ו"שאר המספר" ומחזירה את סכום הספרות.הפונקציה מוסיפה את הספרה הראשונה של שאר הספרות לסכום הספרות עד עכשיו, מוחקת משאר הספרות את הספרה הראשונה, ומחזירה את הערך שחוזר בקריאה לעצמה, על סכום הספרות החדש, ושאר הספרות אחרי שנמחקה ממנה הספרה הראשונה.
פורסם 2005 באוקטובר 820 שנים לא צריך את סכום הספרות עד עכשיו. היא פשוט תחזיר את הסכום שהקריאה הרקורסיבית החזירה + הספרה הנוכחית שהיא עובדת עליה. היא תעצור כאשר המספר יהייה 0. כשאתה רוצה לחשב כמה ספרות יש במספר, תחשוב שכל ספרה בו היא 1.
פורסם 2005 באוקטובר 820 שנים ב-C כן יש case. מה, אתה חייב להתווכח? אמרתי שב- C אין case נוח בפסקל אפשר לתת בתוך case כמה ערכים (אפשר גם ב-C עם כמה caseים אבל זה יותר מסורבל) ואפשר גם לתת טווחים (שבכלל אי אפשר ב- C) מה גם שב- C יש את ה-" feature" המוזר של ה- falltrough במקרה שבו אין break הקוד פשוט ממשיך ל- case הבא.
פורסם 2005 באוקטובר 820 שנים מחבר אני עדיין לא הבנתי איך אני פותר את התרגיל ב- C...מישהו יכול לרשום לי את הקוד?...
פורסם 2005 באוקטובר 820 שנים ללא רקוקסיות כי אין לי מושג מזה:הערה: התוכנית תומכת במספרי עד 19 ספרות. במידה ורוצים יותר יש להגדיל את גודל המערך (מספר הספרות+1).#include <stdio.h>#include <string.h>void main(){char x [20];int i=0;int sum=0;int unzugi=0;while((x[i++]=getchar())!='\n');x [i]='\0';printf("The number of the nums is: %d\n",strlen(x)-1);for(i=0;i<strlen(x)-1;i++){ sum+=x[i]-48; if(x[i]%2==1) unzugi++;}printf("The number of the nums is: %d\n",sum);printf("The number of nums that unzugi is: %d\n",unzugi);}
פורסם 2005 באוקטובר 820 שנים מחבר תודה אחי על הניסיון אבל אני צריך את זה רקורסיווית...אני עדיין לא הבנתי מה זה רקורסיהאתם יכולים להסביר לי את זה בפשטות?מה המטרה שלה?
פורסם 2005 באוקטובר 820 שנים רקורסיה זה שפונקציה קוראת לעצמהאתה יכול לקרוא לפונקציה פעם ראשונה עם המחרוזת לבצע על האיבר הראשון שלה פעולה(לבדוק אם הוא גדול מ-1 לדוגמא), לחתוך את המחרוזת מהאיבר השני(להוריד את האיבר שכבר ביצעת עליו את הפעולה) ולקרוא לעצמה עם המחרוזת החדשה. חוזר חלילה עד אשר אורך המחרוזת קטן מ-1
פורסם 2005 באוקטובר 820 שנים אתה יכול להראות דוגמה מיוסמת?הרי אם אני במימוש של הפונקציה אכניס קריאה לעצמה היא תיכנס ללופ אין סופי.
פורסם 2005 באוקטובר 820 שנים בשביל זה תשים לב לתנאי שכתבתי בסוףחוזר חלילה עד אשר אורך המחרוזת קטן מ-1
פורסם 2005 באוקטובר 820 שנים אוקיי קראתי קצת על הנושא עכשיו אני ינסה להבין את התרגיל שנתנו גיצד ניתו לבנותו עם רקורסיות.
פורסם 2005 באוקטובר 820 שנים סתם כדי לתת לך כיוון לתרגיל הראשון :int func(int num)if (num <= 9) return 1;return func(num/10)+1;הפונקציה תקרא כל פעם עם מספר שקטן פי 10 מהקריאה הקודמת... עבור כל חלוקה ב10 (ספרה) אנו מוסיפים 1 לכן בסוף הערך המוחזר יהיה מספר החלוקות ב-10 עד שהגענו למספר קטן מ-10 וזהו מספר הספרות. כמובן שהתכנית לא עובדת על מספרים שליליים..תרגיל אצבעות : כתוב פונקציה התומכת בספירת מספר הספרות של מספר שלילי.תרגיל למתקדמים : כתוב פונקציה הסופרת את מספר הספרות אחרי הנקודה העשרונית. שים לב שהדברים העיקריים שאמורים להשתנות יהיו "פעולת ההתקדמות" (במקרה זה חלוקה ב-10) ותנאי הבסיס.מטי.
פורסם 2005 באוקטובר 920 שנים תרגיל אצבעות : כתוב פונקציה התומכת בספירת מספר הספרות של מספר שלילי.תרגיל למתקדמים : כתוב פונקציה הסופרת את מספר הספרות אחרי הנקודה העשרונית. שים לב שהדברים העיקריים שאמורים להשתנות יהיו "פעולת ההתקדמות" (במקרה זה חלוקה ב-10) ותנאי הבסיס.מטי.תרגיל אצבעות: ממש פשוט.תרגיל למתקדמים: ישנה בעיה עם שברים כמו 1.33 למעשה יש עד אין סוף פעמים 3 ולכן אי אפשר להגיע למספר מדויק.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.