פורסם 2006 באוקטובר 2419 שנים "נתונה הפונקציה הבאה אשר מטרתה היא קיצוץ השבר של מספר ממשי חיובי תוך שימוש בפונקציה התקנית round:"function TruncPositive (Num: real) :integer;{טענת כניסה: Num מקבל מספר ממשי חיובי}{טענת יציאה: הפונקציה מחזירה את החלק השלם של המספר, כמו הפונקציה התקנית trunc}begin TruncPositive := round(Num - ___)end;המשימה:השלם את החלק הביצועי של הפונקציה.*הערה: אם ה"קוד" משבש את טענת הכניסה ויציאה:טענת כניסה: Num מקבל מספר ממשי חיוביטענת יציאה: הפונקציה מחזירה את החלק השלם של המספר, כמו הפונקציה התקנית truncאני חושב שאפשר לעשות את זה כך:TruncPositive := round(Num -(num / 10) אבל יש עם הפיתרון הזה בעיה - הוא תקף רק לגבי מספרים דו ספרתיים(או שזה נקרא חד ספרתיים?) כגון 3.2 ו 4.6 , אבל הוא לא יעבוד לדברים כגון 46.3 או 120.56.למישהו יש הצעות יותר טובות?תודה מראש לעוזרים.
פורסם 2006 באוקטובר 2419 שנים הפתרון שלך שגוי.תנסה אותו עם 1.9.תנסה אולי להסיר מספר קבוע, ולא משהו שתלוי ב- num. תבדוק מתי הוא מעגל כלפי מעלה, ומתי הוא מעגל כלפי מטה.
פורסם 2006 באוקטובר 2419 שנים מחבר כרגע כתבתי תוכנית וקימפלתי אותה, ניסיתי עם 1.9 והפלא ופלא - הפלט הוא 1, בדיוק כמו שרציתי... מה לא נכון בפיתרון שלי?
פורסם 2006 באוקטובר 2419 שנים ROUND מעגל למספר הקרוב ביותר, או למספר ללא שארית?אם זה הראשון, אז:1.9-0.19=1.71וזה יעגל למספר הקרוב ביותר- 2.אני לא יודע למה אצלך קיבלת 1.בכל מקרה הפתרון שלך שגוי, מכיוון שהתוצאה שאתה מקבל לא נכונה עבור מספרים שגדולים מ- 9.תחשוב על מה שהצעתי לך בתגובה הקודמת שלי.ד.א. ההגדרה של מספרים חד ספרתיים מתייחסת למספרים שלמים. הבעיה אצלך מתקיימת במספרים שקטנים או שווים ל- 9.
פורסם 2006 באוקטובר 2419 שנים מחבר אוקיי, הגעתי לפיתרון ואכן צדקת - הפיתרון שלי לא היה נכון לגבי 1.9, הוא הראה לי שהפיתרון נכון מכיוון שבטעות קלטתי בתוך התוכנית(מה שאני מעביר לפרמטר) כinteger, כך שאת 1.9 הוא קלט כ... 1 אגב, הפיתרון הוא: TruncPositive := round(Num - 0.5); תודה על העזרה
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.