עבור לתוכן

עזרה בבעיה פשוטה בשפת c

Featured Replies

פורסם

מישהו יודע איך אני מעגל מספר בצורה כללית?

כלומר, אני מקבל נתונים, מבצע עליהם כל מיני פעולות ובסוף מקבל מספר אותו אני מדפיס עם 2 ספרות אחרי הנקודה

עכשיו אם אני רושם לו בפקודת ההדפסה שידפיס 2 ספרות אחרי הנקודה הוא פשוט חותך

אני רוצה שפשוט אם הספרה השלישית אחרי הנקודה קטנה מ5, אז לחתוך. גדולה או שוה ל5 אז להוסיף אחד לספרה השניה אחרי הנקודה

מישהו יודע איך אני עושה את זה?

תודה מראש

פורסם

אתה יכול להכפיל את המספר ב-100, להפעיל עליו את הפונקציה round ואז לחלק את התוצאה ב-100.

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

פורסם
  • מחבר

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

האם יש אפשרות להפעיל את הפונקציה הזאת באיזשהי דרך?

פורסם

אם אתה רוצה שהוא יעגל למספר הקרוב ביותר במקום לעגל למטה, פשוט תוסיף 0.005 למספר לפני העיגול.

פורסם

ROUND היא פונקציה של C99 אם אני זוכר ולא של ANSIC.

נסה להשתמש ב FLOOR במקום.

פורסם

לגבי זה אני לא יודע (ansi או לא), אבל הוא לא רוצה floor, הוא רוצה round...

בכל אופן, אם אתה משתמש ב-GCC במקרה, אתה צריך להכליל את ספריית MATH, כלומר בקימפול לכתוב:

gcc test.c -lmath

ואני לא זוכר אם צריך להוסיף גם include math.h...

אגב מצאתי פונקציה דומה בשם rint שלא הבנתי מה ההבדל בינה לבין round.

פורסם

א. צריך להוסיף

#include <math.h>

ב. צריך לקמפל גם עם

-std=c99 -lm

פורסם

לגבי זה אני לא יודע (ansi או לא), אבל הוא לא רוצה floor, הוא רוצה round...

אז שיוסיף למספר 0.5 ויעשה עליו floor

או לחילופין לחסר 0.5 ולעשות ceil

פורסם

אפשר גם לבנות פונקציה כזו:

int round(double x){
int temp=x;

if(x-temp<1-(x-temp))
return temp;

else
return x+(1-(x-temp));
}

פורסם

orlupo, לעשות המרה ככה מ DOUBLE ל INT ממש לא חכם...

פורסם

אם כבר אז תחזיר 1+TEMP ולא כל מה שרשמת שם למטה..

פורסם

orlupo, לעשות המרה ככה מ DOUBLE ל INT ממש לא חכם...

אודה לך אם תלמד אותי דרך שונה.

אם כבר אז תחזיר 1+TEMP ולא כל מה שרשמת שם למטה..

אם כבר temp++.

פורסם

להשתמש בכל שיטה שנאמרה לפני כן (FLOOR/CEIL עם הוספה, או ROUND).

CASTING פשוט חותך את ה DOUBLE אחרי הנקודה, ויש מקרים של חוסר דיוק (שהם תלויים מעבד וקומפיילר למשל), שה CASTING יתן לך את המספק הלא נכון כתשובה. (למשל תעשה לוג 1000 חלקי לוג 10 שזה אמור להיות 3 ואם תעשה CASTING ל INT, בחלק מהמחשבים/קומפיילרים תקבל 2, ובחלק 3).

פורסם

ומה לגבי הכנסה של המספר שרוצים לעשות לו קסטינג למשתנה int חלקי 1?

פורסם

ומה לגבי הכנסה של המספר שרוצים לעשות לו קסטינג למשתנה int חלקי 1?

??

ארכיון

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

דיונים חדשים