ABA


"חידה - מה פלט התוכנית הבאה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7019 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7019
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   23:24   22.09.03   
אל הפורום  
  חידה - מה פלט התוכנית הבאה  
 
   יש קטע תוכנית כזה

בפסקל



var
x,y:real;
z:=(y/x)*x;
writeln(z);

מה לדעתך יהיה הפלט ?
הרץ אץ התוכנית ובדוק מה הפלט והסבר למה זה כך


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  לא יהיה שום פלט szargel 23.09.03 07:07 1
     מסכים עם כל מילה ... jossepe_4u  23.09.03 09:23 2
     אתה טועה. תבדוק בפסקל ותגיד לי למה אתה טועה Benayoun15 23.09.03 13:51 6
  לא הגדרת שום משתנה בשם z SpyCop 23.09.03 13:30 3
     אתה טועה. תבדוק בפסקל ותגיד לי למה אתה טועה Benayoun15 23.09.03 13:51 5
  שכחתי להגדיר את z אבל נניח שהגדרתי Benayoun15 23.09.03 13:51 4
     .... cuteface 23.09.03 14:00 7
         לא יהיה כלום לא רשמת Begin no_angel 23.09.03 14:05 8
             לא יהיה פלו כי no_angel 23.09.03 14:09 9
  לא יהיה כלום כי לא רשמת end. Jojo X Noah 23.09.03 14:48 10
     זאץ לא הנקודה אנ ישואל בכללי Benayoun15 23.09.03 14:54 11
  +-+-+ הנה התוכנית מה הפלט שלה ? +-+-+-+ Benayoun15 23.09.03 15:01 12
     הפלט הוא 10 דני15  23.09.03 15:58 13
         הפלט הוא no_angel 23.09.03 16:02 14
             הפלט יהיה 1.000000000 cuteface 23.09.03 16:09 15
     אהההההההה חכם גדול SpyCop 23.09.03 16:10 16
         10 זה 10, איך זה מציג את זה, זה כבר דבר אחר דני15  23.09.03 16:19 17
     1.000000000000E+01 szargel 23.09.03 18:29 18
  +-+-++-+-+-+- הנה התשובה וכולכם טועים +-+-+- Benayoun15 23.09.03 19:06 19
     בדקתי את זה בבורלנד פסקל של ווינדוס Benayoun15 23.09.03 19:09 20
     סלח לי, אבל אתה מתנהג כמו ילד קטן szargel 23.09.03 19:23 22
         אחי אל דבר מה שאתה לא מבין כנס Benayoun15 23.09.03 19:36 23
             אני הבנתי בדיוק מה שאתה רוצה szargel 23.09.03 22:54 24
                 ''ובתנאים האלה זה שווה 10. '' Benayoun15 23.09.03 22:59 25
                     מתמטית אנחנו מעגלים szargel 23.09.03 23:07 26
                         אתה צודק אבל 2 דברים Benayoun15 23.09.03 23:28 27
                             זה הקטע המוזר לי szargel 23.09.03 23:40 28
                                 החלק הראשון שלך הכל נכון Benayoun15 24.09.03 08:04 30
  +-+-+- מי שכל כך בטוח שזה 10 שיעשה ככה +-+-+- Benayoun15 23.09.03 19:13 21
     בוא נעשה פה קצת סדר. dryice 24.09.03 00:35 29

       
szargel

   07:07   23.09.03   
אל הפורום  
  1. לא יהיה שום פלט  
בתגובה להודעה מספר 0
 
   לא הגדרת את Z בשום מקום, תהיה הודעת שגיאה.
מעבר לזה באם היינו מגדירים את Z הפלט היה Y, והסוגריים מיותרים לחלוטין.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
jossepe_4u 
חבר מתאריך 18.3.02
258 הודעות
   09:23   23.09.03   
אל הפורום  
  2. מסכים עם כל מילה ...  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   13:51   23.09.03   
אל הפורום  
  6. אתה טועה. תבדוק בפסקל ותגיד לי למה אתה טועה  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SpyCop

   13:30   23.09.03   
אל הפורום  
  3. לא הגדרת שום משתנה בשם z  
בתגובה להודעה מספר 0
 
   ואם התכוונת ל y אז הפלט היה יוצא y
מכיוון שחילקת את y ב x
ואחר כך הכפלת אותו ב x
כך שיש 2 פעולות הפוכות שמבטלות אחת את השניה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   13:51   23.09.03   
אל הפורום  
  5. אתה טועה. תבדוק בפסקל ותגיד לי למה אתה טועה  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   13:51   23.09.03   
אל הפורום  
  4. שכחתי להגדיר את z אבל נניח שהגדרתי  
בתגובה להודעה מספר 0
 
   אתם טועים
תבדקו מה הפלט בפסקל
הפלט הוא לא y!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
cuteface

   14:00   23.09.03   
אל הפורום  
  7. ....  
בתגובה להודעה מספר 4
 
   טוב כמו כולם אני אגיד שלא הגדרת את z
ואם היית מגדיר התוצאה היית יוצאת y
אבל הפלט האמיתי הוא בעצם z.....



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
no_angel
חבר מתאריך 20.3.02
4989 הודעות
   14:05   23.09.03   
אל הפורום  
  8. לא יהיה כלום לא רשמת Begin  
בתגובה להודעה מספר 7
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
no_angel
חבר מתאריך 20.3.02
4989 הודעות
   14:09   23.09.03   
אל הפורום  
  9. לא יהיה פלו כי  
בתגובה להודעה מספר 8
 
   לא קלטת כלום


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Jojo X Noah

   14:48   23.09.03   
אל הפורום  
  10. לא יהיה כלום כי לא רשמת end.  
בתגובה להודעה מספר 0
 
  
הטרנד החדש...להציק לאנשים


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   14:54   23.09.03   
אל הפורום  
  11. זאץ לא הנקודה אנ ישואל בכללי  
בתגובה להודעה מספר 10
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   15:01   23.09.03   
אל הפורום  
  12. +-+-+ הנה התוכנית מה הפלט שלה ? +-+-+-+  
בתגובה להודעה מספר 0
 
  

program m;
uses crt;
var
z,x,y:real;
begin
y:=10;
x:=9.9;
z:=(y/x)*x;
writeln(z);
end.

הפלט הוא לא 10
תגידו לי מהו ולמה זה ככה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דני15 
חבר מתאריך 3.8.02
47437 הודעות, 8 פידבק
   15:58   23.09.03   
אל הפורום  
  13. הפלט הוא 10  
בתגובה להודעה מספר 12
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
no_angel
חבר מתאריך 20.3.02
4989 הודעות
   16:02   23.09.03   
אל הפורום  
  14. הפלט הוא  
בתגובה להודעה מספר 13
 
   10.00000000000000000000000000000
בגלל שזה Real אז יענו זה מוסיף עוד אפסים


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
cuteface

   16:09   23.09.03   
אל הפורום  
  15. הפלט יהיה 1.000000000  
בתגובה להודעה מספר 14
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SpyCop

   16:10   23.09.03   
אל הפורום  
  16. אהההההההה חכם גדול  
בתגובה להודעה מספר 12
 
   ערכתי לאחרונה בתאריך 23.09.03 בשעה 16:15 בברכה, SpyCop
 
נתת פחות מחצי תוכנית
וציפית שיתנו לך תשובה.

בכל מקרה
1.00000000000


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דני15 
חבר מתאריך 3.8.02
47437 הודעות, 8 פידבק
   16:19   23.09.03   
אל הפורום  
  17. 10 זה 10, איך זה מציג את זה, זה כבר דבר אחר  
בתגובה להודעה מספר 16
 
   ערכתי לאחרונה בתאריך 23.09.03 בשעה 16:20 בברכה, דני15
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
szargel

   18:29   23.09.03   
אל הפורום  
  18. 1.000000000000E+01  
בתגובה להודעה מספר 12
 
   ערכתי לאחרונה בתאריך 23.09.03 בשעה 18:30 בברכה, szargel
 
שזה בדיוק 10.
תרשום ככה, וזה גם יציג לך את זה בצורה "ידידותית"

writeln(z:2:2);


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   19:06   23.09.03   
אל הפורום  
  19. +-+-++-+-+-+- הנה התשובה וכולכם טועים +-+-+-  
בתגובה להודעה מספר 0
 
   הפלט יהיה
9.9000000000+E00

וזה כי real מוגדר אחרי הנקודה בכמות סיביות מוגבלת והוא לא יכול לשמור את כל התוצאה של 10/9.9 והוא שומר מספר שהוא לא באמת התוצאה
אחר כך כשהוא מכפיל לא יוצא 10 שלם....


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   19:09   23.09.03   
אל הפורום  
  20. בדקתי את זה בבורלנד פסקל של ווינדוס  
בתגובה להודעה מספר 19
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
szargel

   19:23   23.09.03   
אל הפורום  
  22. סלח לי, אבל אתה מתנהג כמו ילד קטן  
בתגובה להודעה מספר 19
 
   הסיבה שזה לא יוצא מדוייק היא של 10 חלקי 9.9 אין תשובה סופית במספר עשרוני.
אגב, אני בדקתי בגרסא לDOS ויצא לי 10, התשובה הנכונה תהיה 9.99 ועוד אין סוף פעמים 9, שזה כמובן בכל צורה "סופית" שתרצה להציג את זה יהיה 10.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   19:36   23.09.03   
אל הפורום  
  23. אחי אל דבר מה שאתה לא מבין כנס  
בתגובה להודעה מספר 22
 
   דבר ראשון אני לומד את זה לבגרות ועשינו בכיתה
דבר שני תוסיף את זה לסוף התוכנית שלך שניה

if z=y then writeln('equal')
else writeln('not equal');

ותראה שזה רושם לך לא שווה

ואחר כך תבוא לדבר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
szargel

   22:54   23.09.03   
אל הפורום  
  24. אני הבנתי בדיוק מה שאתה רוצה  
בתגובה להודעה מספר 23
 
   ונכון שממשית בספרה האין סוף +1 (אם כי הגדרה כזאת לא בדיוק קיימת) אחרי הנקודה יש הבדל.
מעשית - אפילו המחשב לא שם לב להבדל (נסה להדפיס את זה עם התוספת שכתבתי ותראה שיהיה כתוב 10)
ובאמת עם כל הכבוד שלי אליך, אני תכנתתי בפסקל עוד לפני שאתה ידעת מה זה מחשב....
זאת אולי חידה נחמדה בתור תרגיל לבגרות ושטויות כאלה, בחיים אין לזה שום מימוש, אתה תשתמש ב-2 ספרות אחרי הנקודה, ואולי ב-3, ובתנאים האלה זה שווה 10.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   22:59   23.09.03   
אל הפורום  
  25. ''ובתנאים האלה זה שווה 10. ''  
בתגובה להודעה מספר 24
 
   ממש לא
מתמטית זה לא 10
והחידה שלי היא למה
למרות שכבר נתתי תשובה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
szargel

   23:07   23.09.03   
אל הפורום  
  26. מתמטית אנחנו מעגלים  
בתגובה להודעה מספר 25
 
   נניח שאנחנו צריכים לייצג שליש במספר עשרוני, זה יהיה 0.333 עד אין סוף, הספרה האין סוף +1 תהיה משהו אחר, אבל לא 4. (זה הכל תאורטי, שכן אין ספרה כזאת אין סוף +1)
לעומת זאת את 2/3 נייצג ב0.667, כי אנחנו מעגלים למעלה.
את 9.999 שלך, מעגלים ל-10


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   23:28   23.09.03   
אל הפורום  
  27. אתה צודק אבל 2 דברים  
בתגובה להודעה מספר 26
 
   דבר ראשון זה כל הקטע של החידה
להראות עד כמה יכול משתנה real לייצג
דבר שני זה שמעגלים זה לא קשור לחידה למרות שזה נכון מה שאתה אומר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
szargel

   23:40   23.09.03   
אל הפורום  
  28. זה הקטע המוזר לי  
בתגובה להודעה מספר 27
 
   משתנה real הוא סופי, וככזה נותן 10 כתשובה לשאלה שלך.
הקטע המוזר הוא באמת שלמרות זה, הם לא שווים, אבל הוא לא מסוגל להציג את זה על המסך.
חיסור של 2 המשתנים יתן לנו

-1.4551915228E-11

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   08:04   24.09.03   
אל הפורום  
  30. החלק הראשון שלך הכל נכון  
בתגובה להודעה מספר 28
 
   בחלק השני זה לא נכון
זה לא באגג
זה פשוט המשתנה real הוא ככה
יש תשתני שלוקחים יותר סיביות והתוצאה יותר מדויקת


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Benayoun15
חבר מתאריך 7.6.02
1026 הודעות
   19:13   23.09.03   
אל הפורום  
  21. +-+-+- מי שכל כך בטוח שזה 10 שיעשה ככה +-+-+-  
בתגובה להודעה מספר 0
 
   שיכתוב

if y=z then writeln('equal')
else writeln('not equal');

שיוסיף את זה ויראה אם הם שווים


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   00:35   24.09.03   
אל הפורום  
  29. בוא נעשה פה קצת סדר.  
בתגובה להודעה מספר 21
 
   ראשית, החידה לעיל חידה רעה ובכלל לא מוגדרת היטב,
גם לאחר ההבהרות.

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

אפילו אם היינו רוצים להדגים שגיאות נומריות,
ראוי להשתמש בדוגמא קצמת יותר מובהקת,
הדוגמה הפשוטה ביותר להדגים שגיאות נומריות במשתני נקודה
צפה היא לנסות ולסכום אחדות, פשוט לרוץ בלולאה מאוד ארוכה
ולהוסיף למשתנה נקודה צפה איזה שהוא קבוע קטן.
אחרי הלולאה נוסיף גם מספר גדול.
נקבל איזו שהיא תוצאה.
אחר כך נעשה להפך קודם נוסיף את המספר הגדול ואז נתחיל לסכום
עליו אחדות, ונקבל תוצאה שונה,(שונה מאוד, לא פער זניח בכלל)

מי שיחפש אחורנית בפורום, יראה דיונים קודמים על שגיאות
נומריות במשתני נקודה צפה.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net