ABA


"צריך עזרה בתוכנית שכתבתי ב-c"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13727 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13727
Fire_Blede
חבר מתאריך 1.9.02
9598 הודעות
   16:33   20.11.06   
אל הפורום  
  צריך עזרה בתוכנית שכתבתי ב-c  
 
ערכתי לאחרונה בתאריך 20.11.06 בשעה 16:34 בברכה, Fire_Blede
 
אני מקווה שתבינו את ההסבר
אני מנסה לבנות תוכנית שתבצע את הדבר הבא (זה משימה שנתנו לנו בבי"ס):
אני מכניס פונקציה מסוימת (או נתונה) והתוכנית מגלה את ערך השורש (חיתוך עם ציר ה-x, מה שנוסחת שורשים עושה).
ההליך מתבצע כך:
1. אני קולט 2 מקורות (xים) על הפונקציה. דואג שה-y של האחד יהיה חיובי ושל השני יהיה שלישי (positive, negetive) ולכן קראתי להם xn ו-xp ולסרוגין yn ו-yp.
אתם בטח שואלים איך אני דואג שאחד יהיה חיובי ואחד שלילי.. אז ככה: אם ה-y של ה-x האחד גדול מ-0 כלומר חיובי, אני מחסיר ל-x כל הזמן 1 עד שה-y נהיה שלילי (מה שגם גורם לו להתקרב לשורש), וברגע שהוא קטן מ-0 זה עוצר. כנ"ל לגבי השני: אם ה-y שלו קטן מ-0 כלומר שלילי, אני מחבר לו כל הזמן 1 עד שה-y חיובי.

2. אני ממציא x3. ואומר ככה:
x3=(xp+xn)/2
ואז יכולים להתקיים 2 מצבים
א.

ה-y של x3 הוא חיובי
ואז אני קורא לו xp (בעצם מחליף אותו ל-xp)
ואז התהליך חוזר חלילה

ב.

ה-y של x3 הוא שלילי
ואז אני קורא לו xn
ואז התהליך חוזר חלילה

עד שאני ממש ממש ממש מתקרב לנקודה
ופה אני מחליט מה מידת הדיוק שלי
אז אני בחרתי שהדיוק (yp-yn) יהיה 0.001 ומטה

ואז בעצם ככה אני מגיע לנקודה שהיא ממש ממש קרובה לחיתוך עם ציר ה-x ואז אני יכול להגיד שזה נקודת החיתוך עם ציר ה-x

זאת התוכנית:
https://rotter.name/User_files/nor/4561bbee098f06e2.txt

עכשיו הבעיה היא כזאת:
בחלק השני כשאני אומר לו x3=(xp+xn)/2
הוא מתחיל לזייף ותמיד נותן לי אותה תשובה: x3=-2.89, לא משנה איזה נקודות אני מכניס לו עוד מתחילת התוכנית

תודה על ההקשבה
אשמח אם מישהו יוכל למצוא את ה"תקלונת"

:]



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

  האשכול     מחבר     תאריך כתיבה     מספר  
  מישהו? זה לא כזה מסובך כמו שזה נראה Fire_Blede 21.11.06 23:08 1
  יתכן שהבעייה היא aaBlueDragon 23.11.06 20:41 2
     הבעיה כבר נפתרה והמשימה הושלמה Fire_Blede 24.11.06 22:47 3

       
Fire_Blede
חבר מתאריך 1.9.02
9598 הודעות
   23:08   21.11.06   
אל הפורום  
  1. מישהו? זה לא כזה מסובך כמו שזה נראה  
בתגובה להודעה מספר 0
 



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

   20:41   23.11.06   
אל הפורום  
  2. יתכן שהבעייה היא  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 23.11.06 בשעה 21:01 בברכה, aaBlueDragon
 
שמתי לב שהשתמשת במשתנים שבכלל לא קיימים בפונקציות שלך, כמו X3
הוא אינו מוגדר כגלובלי ובכל זאת השתמשת בו בפונציה. קח את כל המשתנשים שהם
כך ותגדיר אותם כגלובליים.
לדוגמה:
float culc(float n, float p)
{
float x3;
x3=n+p;
x3=x3/2;
return x3;
}
בפונקצייה הזאת השתמשת בX3 והוא בכלל לא קיים בה, הוא קיים אך ורק בMAIN שלך.
מה שעלייך לעשות זה או להוריד אותו מהMAIN ולהגדיר אותו מתחת לINCLUDES
או להעביר אותו לפונקצייה כפרמטר.

עוד דבר, יש שורה אחת אצלך בקוד שנראה לי גם יכולה ליצור את הבעייה
y=i*i*i+3*i*i+i+2;
Y אצלך הוא מסוג FLOAT וכמו לכל סוג אחר של משתנה, INT יש מקסימום לערך
שיכול לאחסן בתוכו. תשנה את סוג המשתנה לרחב יותר.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Fire_Blede
חבר מתאריך 1.9.02
9598 הודעות
   22:47   24.11.06   
אל הפורום  
  3. הבעיה כבר נפתרה והמשימה הושלמה  
בתגובה להודעה מספר 2
 
הבעיה היתה בלולאה האחרונה
xp או xn קיבלו את x3
אבל yp או yn לא קיבלו את y3
ובגלל זה ההפרש לא השתנה
ולכן התוכנית אף פעם לא הסתיימה
-2.893 (המספר הקבוע שיצא) זה באמת השורש.. הבעיה שהפונקציה לא ידעה מתי לעצור את עצמה

ד"א מה שאמרת לא היווה שום בעיה.. ובסוף בכלל לא השתמשתי בפונקציה הזאת.. פשוט ביצעתי את הפעולה הזאת ב-main עצמו

הנה התוכנית הסופית:
http://www.planetnana.co.il/4cellular/1.cpp



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

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

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



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