ABA


"מבקש עזרה בפסקל (כיתה י')"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7124 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7124
yakir_r2

   22:36   09.10.03   
אל הפורום  
  מבקש עזרה בפסקל (כיתה י')  
 
   אז תראו, אני נסיתי לבנות תוכנית שתחשב את נוסחת השורשים.
דבר ראשון, הנה הקוד:


program yakir;
uses crt;
var
x1,x2,a,b,c:real;
begin
clrscr;
writeln('a:');
readln(a);
writeln;
writeln('b:');
readln(b);
writeln;
writeln('c:');
readln(c);
x1:=((-1)*b+sqrt(sqr(b)-4*a*c))/2;
x2:=((-1)*b-sqrt(sqr(b)-4*a*c))/2;
if (sqr(b)-4*a*c>0)
then begin
writeln('X1=', x1:7:3);
writeln('X2=', x2:7:3);
end;
if (sqr(b)-4*a*c=0)
then writeln('X=', x1:7:3);
if (sqr(b)-4*a*c<0)
then writeln('No result!');
readln(a);
end.

הנה פירוט על מה שהתוכנית עושה:

1. קולטת את b, a ו-c.
2. עושה חישוב של הנוסחה ושמה את התוצאה ב-x1 (כאשר יש + בין b- לשורש).
3. עושה חישוב של הנוסחה ושמה את התוצאה ב-x2 (כאשר יש - בין b- לשורש).
4. אם הביטוי שמתחת לשורש הוא חיובי אז מדפיסה את x1 ואת x2.
5. אם הביטוי שמתחת לשורש הוא שווה ל-0 אז מדפיסה רק את x1 (כי שניהם יהיו שווים בכל מקרה).
6. אם הביטוי שמתחת לשורש שלילי אז מדפיסה "אין פיתרון!".

עכשיו, כשאני למשל נותן ב-a ערך שהוא גדול מ-1 אז זה נותן לי את הודעת השגיאה הבאה:

Error 207: Invalid floating point operation

 

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


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  האמת היא שיש לך בעיה אחרת szargel 09.10.03 22:48 1
     אמממ.... yakir_r2 09.10.03 23:01 2
         השורה הזאת לא מופיעה בקוד שהבאת למעלה... szargel 09.10.03 23:03 3
             אההה מצטער...הנה yakir_r2 10.10.03 01:31 4
                 הממ, מוזר szargel 10.10.03 11:13 5
                     וואי איזה מטומםםם אני!!!! yakir_r2 10.10.03 14:23 6
                         כמו שאמרתי מקודם szargel 10.10.03 15:22 7

       
szargel

   22:48   09.10.03   
אל הפורום  
  1. האמת היא שיש לך בעיה אחרת  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 09.10.03 בשעה 22:50 בברכה, szargel
 
נסה לקלוט ערכים שיובילו לתוצאה שלילית בשורש, והתוכנית תצא עם הודעת שגיאה, אתה חייב קודם לבדוק ע"י if את תאימות הקלט, ורק אחרי זה לעשות שורש...
מעבר לזה, באיזה שורה הוא עומד כשהוא מציג לך את הודעת השגיאה?

הממ, זה צריך להיות לחלק ל2a ולא לחלק ל-2, אבל זה טעות מתמטית ולא טעות תיכנותית.


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

   23:01   09.10.03   
אל הפורום  
  2. אמממ....  
בתגובה להודעה מספר 1
 
   דבר ראשון, תודה על התיקון בקשר לנוסחה...חמק ממוחי.
ודבר שני, את ההודעה הזאת זה מראה לי בשורה:

writeln(a);

תודה


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

   23:03   09.10.03   
אל הפורום  
  3. השורה הזאת לא מופיעה בקוד שהבאת למעלה...  
בתגובה להודעה מספר 2
 
  


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

   01:31   10.10.03   
אל הפורום  
  4. אההה מצטער...הנה  
בתגובה להודעה מספר 3
 
   פשוט התבלבלתי קצת.


writeln('a:');


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

   11:13   10.10.03   
אל הפורום  
  5. הממ, מוזר  
בתגובה להודעה מספר 4
 
   זאת הודעת שגיאה שאתה יכול לקבל אם הדלתא קטנה מאפס, כלומר היא היתה צריכה להופיע על אחת מ-2 השורות שמתחילות בx1/x2.
אתה מצליח להכניס קלט, או שהתוכנה בכלל לא רצה? אם כן, תקלוט ערכים שיתנו דלתא חיובית


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

   14:23   10.10.03   
אל הפורום  
  6. וואי איזה מטומםםם אני!!!!  
בתגובה להודעה מספר 5
 
   מצטער אחי שהטעיתי אותך, זה באמת נותן את השגיאה בשורה של ה-x1!

וואי מצטער אחי איזה מפגר אני!
ותודה רבה על העזרה שלך עד עכשיו


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

   15:22   10.10.03   
אל הפורום  
  7. כמו שאמרתי מקודם  
בתגובה להודעה מספר 6
 
   ערכתי לאחרונה בתאריך 10.10.03 בשעה 15:24 בברכה, szargel
 
זאת הודעת השגיאה שמקבלים כאשר מנסים להוציא שורש ממספר שלילי, אם אתה קולט ערכים שיוציאו מספר חיובי לא תופיע לך הודעת שגיאה.
פשוט תעשה קוד כזה:

if (sqr(b)-4*a*c)>0 then
Begin
writeln('פתרון אחד',.......);
writeln('פתרון שני',.......);
end
else if (sqr(b)-4*a*c)=0 then writeln('יש פתרון אחד והוא',.....)
else writeln('אין פתרון');

למעשה x1 וx2 מיותרים...


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

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

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



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