שאלונת...

שאלונת...../images/Emo13.gif

איך אני מעגלת למס' הקרוב (כמו הפונקציה Round)? בלי פונקציה. בתחילה חשבתי שאני אעשה תנאי, אבדוק את המספר ואפעל כנדרש... אבל יש בעיה קטנה... לא למדנו לעשות תנאי.
(חשבתי על התנאי כי למדתי פסקל אז אני מקבילה אותו ל-#C). דבר נוסף... עשינו עם המורה תרגיל ביחד, כשהגעתי לבית, הרצתי את התוכנית ולתדהמתי, הוא מצא 42 שגיאות , האמנם???
תודה רבה ויום טוב.
 

johnny d

New member
איזה שאלה מוזרה :)

בהינתן מספר ביצוג כלשהו, לדוגמה בצורה עשרונית: 14.567 לעשות round זה פשוט להתייחס רק לספרות לפני הנקודה (משמאל לימין) בתורת המספרים מוגדרת פעולת מודולו, לעגל מספר משמעותו המתמטית היא הפעלת מודולו עם המספר והמספר 1 (זו פונקציה נינארית) round(n) = n mod 1
 
ואוו...................../images/Emo13.gif

איזו שפה גבוהה...
תודה רבה לך. אני הבנתי את הפעולה של ה-Round, אבל לא הבנתי איך אני עושה את זה בלי הפונקציה.
ב-#C אין Mod, לא?
 

johnny d

New member
סליחה לא הבנתי את השאלה שלך.

אני דיברתי על floor אבל כבר ענו לך . . . round(x) = floor(x+0.5) = x + 0.5 mod 1.0 ב c# בטוח יש פעולת מודולו, אבל במקום floor אפשר להשתמש ב- casting ל- int.
 

johnny d

New member
שוב טעיתי, אבל זה לא קשור לשאלה שלך

השבר הוא: x mod 1 והחלק השלם הוא ההפרש: floor(x) = x - x mod 1
 

Imperia

New member
תוסיפי חצי ותעגלי לעשרוני הקרוב

כלומר משהו כמו
y=(int)(x+0.5)​
(לא מתחייבת על התחביר של C#...) ולגבי ה-42 שגיאות: סביר להניח שזה חסר משמעות, פרט לעובדה ש-42 הוא מספר יפה מאד. כאשר הקומפיילר מוצא שגיאה, הוא משתדל להתאושש ממנה ולהמשיך לקמפל,אבל בדרך כלל זה לא מועיל הרבה, כי הוא רק נופל לעוד ועוד בעיות. סביר להניח שיש שגיאה אחת-שתיים, משהו בסינטקס חולה, וברגע שתתקני את זה כל ה-42 ייעלמו כלא היו.
 
מה השגיאה כאן?...../images/Emo4.gif

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