מסתבך עם שאלה פשוטה

עייטן

New member
מסתבך עם שאלה פשוטה

השאלה אומרת: עליך לקלוט מספר ממשי ולהציג: את המספר שנקלט, את החלק השלם ואת החלק העשרוני. להציג את המספר שנקלט, קלי קלות. להציג את המספר השלם גם קלי קלות (printf ("%l",num); ) אבל איך מציגים את המספר העשרוני בלבד??????
 

ilan26

New member
תשובה

תחסיר מהמיספר המקורי את המספר השלם.... ומה נשאר ?
 

עייטן

New member
ואיך עושים את זאת בC?

כמו שאמרתי אני יודע לעשות את זה בתצוגה להראות את המספר השלם. אבל להחסיר אני לא יודע. :-< תעזור לי בכל זאת?
 

ihovav

New member
יש אופרטור ב C שנקרא מודולו

הוא מסומן ב % אתה יכול לעשות כך : להדפיס (1 % X) וזה יתן לך את השארית - כלומר את החלק הלא שלם
 

ilan26

New member
לא מבין

1) אתה מחלק פה שני מיספרים ??? 2) אתה קולט רק מספר אחד עם שברים עשרוניים ??? 3) אתה צריך כתשובה את המיספר עם שברים רגילים או עשרוניים ??? 4) פיתרון בכתב אני לא ישלח לך, אבל לוגיקה ודרך אני יכול לעזור.
 

ihovav

New member
תשתמש ב מודולו

מודולו כלומר השארית שנשארת בחילוק מספר אחד באחר, לדוג´ - אם אתה מחלק 9 ב 2 נשארת שארית 1 וזה מה שיוצג תעשה ככה : תדפיס (X % 1) ואז השארית היא החלק הלא שלם של המספר את הסוגריים אתה יכול לשים בתוך פקודת ה PRINTF או להשים את הערך לתוך משתנה FLOAT ואז להדפיס אותו - אתה צריך להשתמש ב F% בPRINTF
 

ihovav

New member
חשבתי שהשרת לא העלה את ההודעה

הראשונה לכן כתבתי אותה שוב - אבל הכוונה היא לאותו דבר
 

עייטן

New member
חב´רה , יש עדין בעיה!!!

אני יענה לכולם ביחד. אני קולט מספר ממשי. כלומר מספר עם נקודה עשרונית. יופי. אני צריך להציג את השלם. ואני צריך להציג את השארית. לגבי ה%, יש בעיה עם זה. זה עובד רק עם מספרים שלמים ולא עם מספריים ממשיים. תנסו לבד לרשום ותראו שאני צודק. אם רושמים num%1 כאשר ה num הוא ממשי, זה לא עובר בקומפיילר. אני מיואש...
 

linuxius

New member
נו מה הבעיה...תשובה

float num=7.6; printf("%d %d",(int)num,num-(int)num);
 

עייטן

New member
לא עובד לי

את המספר השלם מביא ואת השארית הוא מדפיס לי 0 ולא 6. מוזר ,לא?
 

ke

New member
בנוסף...

במקום לשחק עם casting, קיימות פונקציות בשם floor ו ceil בספריה math.h. הפונקציות מחזירות את המספר השלם הכי קרוב מלמעלה ולמטה (הם מחזירות אותו בתור double). כלומר floor(3.4) = 3 ו floor(-2.3) = -3 ו ceil(-2.3) = -2 ו ceil(3.4) = 4. לפעמים עדיף להשתמש בהם כי casting ל int יכול להיות תלוי מימוש (כלומר תלוי ביצוג בביטים של המספרים). בנוסף, כדאי תמיד לבדוק את התוכנית שלך על מספרים שליליים. בהצלחה
 
למעלה