(חושב ש)צריך עזרה בשיעורי בית בפסקל - round to trunc. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

(חושב ש)צריך עזרה בשיעורי בית בפסקל - round to trunc.


Judas Iscariot

Recommended Posts

"נתונה הפונקציה הבאה אשר מטרתה היא קיצוץ השבר של מספר ממשי חיובי תוך שימוש בפונקציה התקנית 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.

למישהו יש הצעות יותר טובות?

תודה מראש לעוזרים.

קישור לתוכן
שתף באתרים אחרים

ROUND מעגל למספר הקרוב ביותר, או למספר ללא שארית?

אם זה הראשון, אז:

1.9-0.19=1.71

וזה יעגל למספר הקרוב ביותר- 2.

אני לא יודע למה אצלך קיבלת 1.

בכל מקרה הפתרון שלך שגוי, מכיוון שהתוצאה שאתה מקבל לא נכונה עבור מספרים שגדולים מ- 9.

תחשוב על מה שהצעתי לך בתגובה הקודמת שלי.

ד.א. ההגדרה של מספרים חד ספרתיים מתייחסת למספרים שלמים. הבעיה אצלך מתקיימת במספרים שקטנים או שווים ל- 9.

קישור לתוכן
שתף באתרים אחרים

אוקיי, הגעתי לפיתרון ואכן צדקת - הפיתרון שלי לא היה נכון לגבי 1.9, הוא הראה לי שהפיתרון נכון מכיוון שבטעות קלטתי בתוך התוכנית(מה שאני מעביר לפרמטר) כinteger, כך שאת 1.9 הוא קלט כ... 1 :x

אגב, הפיתרון הוא:

TruncPositive := round(Num - 0.5);

תודה על העזרה :)

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...