Judas Iscariot פורסם 2006 באוקטובר 24 Share פורסם 2006 באוקטובר 24 "נתונה הפונקציה הבאה אשר מטרתה היא קיצוץ השבר של מספר ממשי חיובי תוך שימוש בפונקציה התקנית 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.למישהו יש הצעות יותר טובות?תודה מראש לעוזרים. קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 באוקטובר 24 Share פורסם 2006 באוקטובר 24 הפתרון שלך שגוי.תנסה אותו עם 1.9.תנסה אולי להסיר מספר קבוע, ולא משהו שתלוי ב- num. תבדוק מתי הוא מעגל כלפי מעלה, ומתי הוא מעגל כלפי מטה. קישור לתוכן שתף באתרים אחרים More sharing options...
Judas Iscariot פורסם 2006 באוקטובר 24 מחבר Share פורסם 2006 באוקטובר 24 כרגע כתבתי תוכנית וקימפלתי אותה, ניסיתי עם 1.9 והפלא ופלא - הפלט הוא 1, בדיוק כמו שרציתי... מה לא נכון בפיתרון שלי? קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 באוקטובר 24 Share פורסם 2006 באוקטובר 24 ROUND מעגל למספר הקרוב ביותר, או למספר ללא שארית?אם זה הראשון, אז:1.9-0.19=1.71וזה יעגל למספר הקרוב ביותר- 2.אני לא יודע למה אצלך קיבלת 1.בכל מקרה הפתרון שלך שגוי, מכיוון שהתוצאה שאתה מקבל לא נכונה עבור מספרים שגדולים מ- 9.תחשוב על מה שהצעתי לך בתגובה הקודמת שלי.ד.א. ההגדרה של מספרים חד ספרתיים מתייחסת למספרים שלמים. הבעיה אצלך מתקיימת במספרים שקטנים או שווים ל- 9. קישור לתוכן שתף באתרים אחרים More sharing options...
Judas Iscariot פורסם 2006 באוקטובר 24 מחבר Share פורסם 2006 באוקטובר 24 אוקיי, הגעתי לפיתרון ואכן צדקת - הפיתרון שלי לא היה נכון לגבי 1.9, הוא הראה לי שהפיתרון נכון מכיוון שבטעות קלטתי בתוך התוכנית(מה שאני מעביר לפרמטר) כinteger, כך שאת 1.9 הוא קלט כ... 1 אגב, הפיתרון הוא: TruncPositive := round(Num - 0.5); תודה על העזרה קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.