פורסם 2007 בנובמבר 1618 שנים קלט - הכנס מספר (במילימטרים )ומוציאים פלט כך ק"מ :מטרים :סנטימטר :מילימטר : תודה לעונים . כלומר ק"מ + מטרים +סנטי + מילי = לקלט שהוכנס
פורסם 2007 בנובמבר 1618 שנים מה הבעיה...לא משנה באיזו שפה זה דבר פשוט.... קח את מספר הק"מ תכפיל ב-1000 עכשיו יש לך את מספר המטרים, תכפיל ב-100 עכשיו יש לך את מספר הס"מ, תכפיל ב-10 עכשיו מס' המילימטרים...
פורסם 2007 בנובמבר 1618 שנים מחבר לא הכוונה היא . נגיד הכנסתי מספר כזה 57654362576349875634734809 צריך לצאת פלט :ק"מ : כך וכך מטרים : כך וכך :סנטי : כך וכך מילימטרים : כך וכל לדוגמא 5000500 (מילימטרים ) ק"מ : 5מטרים :50 סנטימטרים : 0מילימטרים : 0
פורסם 2007 בנובמבר 1618 שנים מחבר את הקוד לכתוב זה לא יהיה בעיה , אני רק רוצה להבין איך פותרים תרגילים כאלה , ואיך ומתי אני משתמש עם המודולו . אם מישהו יכתוב לי אלגוריתם פשוט לפתרון אשמח .
פורסם 2007 בנובמבר 1618 שנים אתה מחלק (חילוק אינטג'רי) את הנתון ב1000000 (נדמה לי) כי לקבל את מס הקילומטרים, מחסיר את המס' המילימטרים שהלכו לקילומטרים (1000000 * מס קילומטרים) מהנתון ומחשב את המטרים והסנטימטרים באותה דרך..או שבמקום לחסר מהנתון אתה משתמש במודולו, אבל אם אני לא טועה זה יהפוך לדי מסורבל ופחות מובן כשתחשב את המילימטרים (יהיו הרבה פעולות בשורה אחת).
פורסם 2007 בנובמבר 1618 שנים תעשה את החישוב לפימילימטרים=סנטימטרים*10סנטימטרים=מטרים*100ק"מ=מטרים*1000ובעקרון החישוב שאתה צריך לעשות הפוךעם מודולו, ואז תקבל את התוצאות כל פעם...
פורסם 2007 בנובמבר 1618 שנים כעיקרון כל מה שאמרו לך הוא נכון, אבל אני מניח שאתה די חדש בתחום התיכנות, אז אנסה להעמיק מעט יותר:פעולת מודולו היא הפעולה שמחזירה שארית של חלוקה בשלמים. למשל: 5 מודולו 3 שווה ל-2. תוצאת החילוק (בשלמים) היא 1 והשארית היא 2.דוגמה נוספת 18 מודולו 3 שווה 0 (אין שארית) 20 מודולו 3 שווה 2 וכו'.וכעת כיצד זה אמור לעזור לך לפתרון התרגיל:כאשר הקלט הוא מספר שלם במילימטרים, כדי למשל "לסנן" רק את המלימטרים מתוך כל האורך הנתון ניתן להשתמש ב-X מודולו 10 (כאשר X הוא הקלט בתוכנית).הסיבה דווקא לבחירת 10 היא שסיפרת העשרות כבר מהווה סנטימטרים. שלב הבא, לסינון מספר הסנטימטרים אפשר (לא הכרחי) להחסיר תחילה את מספר המילימטרים שקיבלת קודם מ-X, ולחלק את התוצאה (אותה אמשיך לכנות X) ב-10. X כעת הוא למעשה האורך בסנטימטרים. המידה הבאה שאתה צריך לסנן היא מטרים, ומכיוון ש100 סנטימטרים הם כבר מטר אחד, עליך לחשב את תוצאת X מודולו 100, כדי לסנן את הסנטימטרים בלבד (מספר הקטן ממטר בודד). ובאופן זה להמשיך הלאה עד ליחידת המידה האחרונה אותה עליך לפלוט.אינני יודע באיזו שפה אתה צריך להשתמש כדי לממש את התוכנית, אך ב-C למשל אופטור המודולו הינו אופרטור בינארי (פועל על שני ארגומנטים) ומיוצג עי" הסימן אחוז. לדוגמה: ערך הביטוי: 5%3 הוא 2.בצורה אלגוריתמית (X הוא הקלט):1. NumOfMm=X mod 102. X=(X-NumOfMm)/103. NumOfCm=X mod 1004. X=(X-NumOfCm)/1005. NumOfM=X mod 10006. X=(X-NumOf)/10007. NumOfKm=X
פורסם 2007 בנובמבר 1618 שנים אין בהכרח טעם לבצע החסרה של המספר הקודם ואז חלקי 10ברוב השפות יש את המקביל לMOD שנקרא DIV - שהוא נותן את המספר חלקי המספר הרצוי בלי השארית משמע אם היית מחלק5 DIV 2 = 2ובC זה בעצם חלקי או "/"אז אחרי כל MOD או % בC שתעשהתצטרך לעשות X=X/10 (או) X/=10(וכמובן, 10 או 100 או 1000 לפי הצורך
פורסם 2007 בנובמבר 2018 שנים מחבר # include <stdio.h>int main (){ unsigned long x,km,m,cm,mm ; printf("enter a number :"); scanf("%u",&x); km = x/1000000; x =x%1000000; m= x/1000; x=x%1000; cm =x/10; x=x%10; mm=x; printf("\n km: %u ",km); printf("\n m: %u ",m); printf("\n cm: %u ",cm); printf("\n mm: %u ",mm); getchar(); return 0; } ניסיתי לכתוב את התוכנית ב Cהקמפול עבר בהצלחה , אבל יש שגיאת ביצוע , כלומר התוכנית מתרסקת באמצע ריצה ואני לא מגיע ל getchar שיעצור את התוכנית , והחלון דוס\קונסול ישר נסגר ,מה הבעיה ? תודה . עריכה : ב CMD התוכנית עובדת טוב (אין שגיאה ) למה getchar לא עובד ?
פורסם 2007 בנובמבר 2018 שנים תוסיף flushall();לפני הקריא ל GETCHAR.מכיוון ש ה ENTER שהקלדת נשמר ב BUFFER, ה GETCHAR קורא משם. ה "פלאש" מנקה את החוצץ, ו GETCHAR מחכה להקלדה חדשה ( בעקרון ).GETCH גם יכל לעבוד, אפילו בלי ניקוי של החוצץ.אבל אלה פתרנות עוקפים, הפונקציות האלה לא בנויות לעבוד בסביבת עבודה של WIN.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.