עבור לתוכן

סכימת מס' הספרות שיש במספר C.

Featured Replies

פורסם

ניסיתי לחשוב על דרך לסכום את מס' הספרות במספר מטיפוס signed ולא כ"כ הצלחתי..

חשבתי לבודד כל מספר ע"י מודולוס ולהקפיץ איזשהו מונה ככה לאורך כל המספר אבל,לא הצלחתי ליצור תנאי לולאה נכון..

פורסם

אז כתוב כאן את הקוד/אלגוריתם שלך וננסה לראות מה הבעיה.

פורסם

למה מודולו ולא חלוקה רגילה? אתה מקצץ את המספר עד שהוא שווה 0.

פורסם

106 / 10 = 10

you lost 6

106 % 10 = 6

only then you use /

לפחות ככה אני זוכר את זה.

פורסם

למה מודולו ולא חלוקה רגילה? אתה מקצץ את המספר עד שהוא שווה 0.

בבירור, אבל צריך גם מודולו בשביל לשלוף את הספרות עצמן. סתם לאפס את המספר לא יעזור לאף אחד :)

פורסם

למה אני צריך לשלוף את הספרות? אני פשוט מגדיל counter כלשהו. אם אתה רוצה לשמור על המספר תעתיק אותו למשתנה אחר.

פורסם
  • מחבר

אבל זה עדיין לא משנה את את ערך המספר...

אני לא יודע כמה ספרות יש במספר או ליתר דיוק כמה ספרות הטיפוס יכול להכיל.בנוסף,להעתיק אותו ממש לא יעזור לי אני צריך למנות מאפס את מס' הספרות המופיעות במס'.

שניצל,עדיין לא מסתדר לי אלגוריתם כלשהו אני מסתבך עם זה ואין לי עוד אינדיקציה לאיך לעשות את זה...

פורסם

מה זה משנה כמה ספרות יש בו?

לולאה שמתבצעת כל עוד המספר אינו 0. בלולאה אתה מקצץ את המספר ומגדיל מונה. אחרי הלולאה אתה מחזיר את המונה.

תחשוב על מקרה הבסיס בו המספר הוא 0.

פורסם

יש פה קצר בתקשורת שנובע מאי בהירות של ההודעה הראשונה.

למיטב הבנתי (ולפי ההודעה האחרונה שלו), פותח הת'רד רוצה לסכום את הספרות במספר, לא לחשב כמה ספרות יש בו.

פותח הת'רד: להבא, תנסה להיות יותר ברור (לדוגמה, לספק דוגמאות לקלט ופלט).

אני מבקש ממך שוב - כתוב כאן את האלגוריתם הבסיסי שאתה מנסה לעבוד עליו.

פורסם

יכול להיות שאתה צודק. ואם כך המינוח אינו מונה(counter) אלא סוכם(sum).

פורסם

int digital_sum(int n)
{
int s = 0;

do {
s += n%10;
}while(n/=10);

return s;
}

פורסם

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

while (n > 0) {
s += n%10;
n /= 10;
}

פורסם
  • מחבר

אני אחדד -> התוכנית קולטת מספר שלם,יתכן גם שלילי ומדפיסה את מס' הספרות שיש במספר.

לדו' אם הוקלד 12530 התוכנית תדפיס 5.

ניסתי איזושהי לולאה,כושלת אומנם אבל אני לא יכול לחשוב על משהו אחר......



void D(signed n)
{
int cnt=0;
do
{
n%10==cnt++;
n=n/10;

}
while(n>0);
}


ד"א כשאני מנסה לעשות דיבאג ולעקוב אחרי כל שורה משום מה התוכנית זורקת אותי החוצה..

פורסם

מה ההגיון בשורה הזו?


n%10==cnt++;

מה הקשר בין n%10 (ששווה לספרת האחדות ב-n) ל-cnt (ששווה למספר הספרות שספרת עד עכשיו)?

פורסם
  • מחבר

אני רוצה שימנה את הספרה הכי ימנית ואחרי זה "יקצץ" אותה ויקפיץ את המונה..

ז"א אם נסתכל על המספר 12345 שיקח את 5 לחוד יעלה את המונה ואז יחלק ב10 ז"א שזה נכנס מחד ללואה עם 1324 וחוזר חלילה

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים