פורסם 2010 באפריל 2815 שנים שלום ליושבי הפורום.אני עושה את צעדיי הראשונים בלימוד שפת C, ונתקלתי בתרגיל הזה (מיושר לשמאל):If a five-digit number is input through the keyboard, write a program to calculate the sum of its digits. (Hint: Use the modulus operator %)אחרי ששברתי את הראש, הצלחתי סוף סוף לפתור את זה, אבל בדרך מאוד מסורבלת.משום מה יש לי תחושה שפיספסתי משהו וניתן לפתור את זה בדרך הרבה יותר פשוטה...אשמח אם מישהו מכם יוכל לשתף דרך פיתרון נוספת, פשוטה יותר.תודה רבה מראש.
פורסם 2010 באפריל 2815 שנים ישנה דרך פשוטה לגשת לאיברים במספר מסוייםכאשר אני מחלק מספר לדוגמא ב100, אני אקבל את ספרת המאות שלו.מפה אתה יכול להבין לבד, אם לא, תגיד
פורסם 2010 באפריל 2815 שנים מחבר שכחתי להוסיף את הפיתרון שלי... סורי... הרי הוא: #include<stdio.h>int main(){ int Sum, C; printf("Enter 5 digit number...\n"); scanf("%d", &C); Sum=C/10000; /* Sum=ספרת עשרות אלפים */ C=C%10000; /* C=קוצץ, ועכשיו מספר 4 ספרתי */ Sum=Sum+C/1000; /* Sum=צובר את ספרת האלפים */ C=C%1000; /* C=קוצץ, ועכשיו מספר תלת ספרתי */ Sum=Sum+C/100; /* Sum=צובר את ספרת המאות */ C=C%100; /* C=קוצץ, ועכשיו מספר דו ספרתי */ Sum=Sum+C/10; /* Sum=צובר את ספרת העשרות */ C=C%10; /* C=קוצץ, ועכשיו מספר חד ספרתי */ Sum=Sum+C; /* Sum=צובר את ספרת האחדות */ printf("The sum of your number's digits is %d", Sum); scanf("%d", &C); return 0;} ישנה דרך פשוטה לגשת לאיברים במספר מסויים כאשר אני מחלק מספר לדוגמא ב100, אני אקבל את ספרת המאות שלו. מפה אתה יכול להבין לבד, אם לא, תגיד זהו, עשיתי משהו דומה (ראה קוד מצורף). פשוט לפני הרבה שנים למדתי "פסקל", ואני זוכר שיש שם דרך יותר יעילה לעשות את זה. חשבתי אולי גם כאן אני מפספס משהו... תודה רבה לשניכם על התגובה.
פורסם 2010 באפריל 2815 שנים אני לא יודע אם הגעת ללולאות... אם כן, תריץ לולאה שבה כל פעם אתה מחלץ את ספר האחדות ע"י %10, סוכם את הספרה למשתנה, ואז מחלק את המספר ב 10 כדי להיפטר מהספרה שכבר סכמת.תנאי היציאה מהלולאה יהיה כשהמספר (שכל פעם חילקת ב 10) שווה ל- 0.ככב זה יעבוד לך עם מספר שמורכב מכל גודל ספרות.בהצלחה.
פורסם 2010 באפריל 2815 שנים מחבר אני לא יודע אם הגעת ללולאות... אם כן, תריץ לולאה שבה כל פעם אתה מחלץ את ספר האחדות ע"י %10, סוכם את הספרה למשתנה, ואז מחלק את המספר ב 10 כדי להיפטר מהספרה שכבר סכמת. תנאי היציאה מהלולאה יהיה כשהמספר (שכל פעם חילקת ב 10) שווה ל- 0. ככב זה יעבוד לך עם מספר שמורכב מכל גודל ספרות. בהצלחה. תודה רבה. מעריך מאוד את העזרה. עדיין לא הגעתי ללולאות. אני יודע מה תפקודם ותפקידם, אבל אינני יודע איך ליישם אותן ב-C. האם לדעתך לולאה היא הדרך היחידה לייעל את הקוד הנ"ל?
פורסם 2010 באפריל 2815 שנים ללא לולאה אני חושב שאין דרך יותר נורמלית ממה שאתה כתבת.אתה צריך לכתוב שורת קוד עבור כל ספרה, אין מה לעשות.
פורסם 2010 באפריל 2815 שנים דווקא יש מקום לייעל - שים לב שבכל שורה אתה צריך לעבוד עם חזקה אחרת של 10 (בהתחלה 10000, אח"כ 1000, אח"כ 100 וכו').תחשוב איך אפשר לעשות את זה יותר חכם, ככה שכל פעם תעבוד רק עם 10.נ.ב. אין צורך לצטט הודעות שמעליך.
פורסם 2010 באפריל 2815 שנים מבחינת יעילות אני לא חושב שזה משנה עם הוא מחלק ב 10 או ב 100 או ב 1000...זה רק יראה יותר נעים לעין.
פורסם 2010 באפריל 2915 שנים קבל תיקון, לא התכוונתי יעילות במובן הזה התכוונתי באמת שהקוד יהיה יפה יותר (והוא יעיל יותר במובן שאחר כך שכתוב הקוד כך שיעבוד באמצעות לולאה יהיה קל יותר).
פורסם 2010 באפריל 2915 שנים מחבר שניצל,ובכל זאת...כדי שאחכים, מה התכוונת בהודעתך?באיזו דרך ניתן לעבוד רק עם 10?תודה רבה לכולכם על התגובות.נ.ב. נזכרתי בפקודה המקבילה ל-'%' בפסקל.שם היא נקראת MOD, ואחותה היא ה-DIV...
פורסם 2010 באפריל 2915 שנים שים לב לפתרון שהצעתי בלולאה. שם התשובה.למשל, המספר 123456תעשה %10 לשלוף את האחדות, ותחלק ב 10 לאחר מכן, אתה תשאר עם המספר 12345.מכאן אתה צריך להבין לאן להמשיך.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.