עזרה בתוכנית ב C++

  • פותח הנושא lmalo
  • פורסם בתאריך

lmalo

New member
למה 0?

אני לא מבין בדיוק למה a[n]-'0'? בשביל מה עושים פחות התו 0?
 

frangelico

New member
זה מחזיר את הערך המספרי

של הספרה. כל ספרות הן בין 48 ל 57 (כמו שאתה עושה בבדיקה ב IF) עכשיו אן למשל הספרה היא '2' אז האסקי שלה הוא 50. ופחות האסקי של '0' שהוא 48 יתן 2 (כערך מספרי) ןלכן ניתן גם היה לרשום 48 במקום '0'.
 

lmalo

New member
איך יכול להיות שזה מחזיר 0?

ואיך יכול להיות שזה מחזיר 0 ועדיין עובד? זה לא צריך להחזיר את המספר עצמו?
 

frangelico

New member
הפונקציה

מחזירה בכל פעם שהתו הוא מספר את הערך המספרי שלה למשל אם המחרוזת היא "123" אז ב 1 יחזיר 100 ב 2 יחזיר 20 ב 3 יחזיר 3 במצב הזה הסכום נותן את המספר המבוקש. ומה התו הבא ? כמובן '0\' ובמקרה זה אין מה להוסיף אז הוספתי אפס. כמובן שאפשר היה גם לתת תנאי עצירה במקום זה. זה מה שעלה לי בראש באותו הרגע.
 

lmalo

New member
ועוד משהו קטן..

ומה אני יכול לעשות בכדי שזה יחזיר לי -1 מתי שיש תו?
 

lmalo

New member
מה כדאי לעשות?

אם לא ניתן להחזיר את המחרוזת כמיספר יש לכתוב 1- אז לפי התוכנית שלך אני מנסה לדחוף את 1- איכשהו וזה לא עובד.. - זה מחזיר לי בכל אופן מס' מוזר הנה הקוד: מה אני צריך לעשות?
double Mispar(char a[],int len) { int n = strlen(a) - len; if ((a[n]>=48)&&(a[n]<=57)) { return (a[n] - '0') * pow(10, len - 1) + Mispar(a,len-1); } if ((a[n]<48)&&(a[n]>57)) return -1; else return 0; }​
 

vinney

Well-known member
היי, איש, האכילו אותך בכפית

שזה משהו שלא נהוג לעשות בפורום תפעיל את הראש לפחות קצת כדי להבין איך מעלים את 1- דרך כל הרקורסיות חזרה, זה לא עד כדי כך מסובך!
 

lmalo

New member
אתה צודק

אני פשוט לא הבנתי עד הסוף רקורסיות וזה מלחיץ.
 
למעלה