ABA


"בא לי לבכות! מה לא בסדר בזה?!?! C\C++"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15561 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15561
spidey1  
חבר מתאריך 1.7.02
25536 הודעות
   23:57   17.11.09   
אל הפורום  
  בא לי לבכות! מה לא בסדר בזה?!?! C\C++  
 
   זה התרגיל שקיבלנו:

אסור לנו להשתמש בפונקציות...(math, squr וכל זה...)
וזה הקוד שבניתי:

#include <iostream>
using namespace std;
void main ()
{
float const PI=3.141592;
float temp, NUM, a2=3.0, a3=1.0, a4, a5=0.0, a6=1.0, a7=1.0;
int i;
cout<<"please enter a number\n";
cin>>NUM;
temp=NUM;
while(a6>0.001)
{
for (i=0; i<2; i++) //*לולאת חזקה
{
temp=NUM*temp;
}
a3=a2*(a2-1)*a3;//*חישוב עצרת
a4=temp/a3;//*חישוב חילוק החזקה בעצרת
a4=a4*a7;//*שינוי הסימן, פעם חיובי פעם שלילי
a5=a5-a4;//*חישוב המספר החדש
a6=NUM+a5;
a7=a7*(-1);
a2=a2+2;//*החזקה והעצרת עולים ב2
if (a6<0)
{
a6=a6*(-1);
}
}
cout<<"the number is: "<<a6<<"\n";
cout<<"the number in rad is: "<<a6/PI<<"\n";
}

וכשאני מריץ את התוכנית זה רושם לי:


-1.#Ind

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

וגם כשמקישים את הספרה 1, התוכנית פתאום קופאת... איך זה הגיוני?!

תודה לעוזרים...


Tears Will Get You Sympathy,
Sweat Will Get You Results!


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  למדתם קריאות לפונקציות? ldan192  18.11.09 09:07 1
  האמת שהקוד שלך ממש לא מובן. Deuce  18.11.09 13:46 2
  מצאתי את הבעיה ופתרתי אותה spidey1   18.11.09 18:06 3

       
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   09:07   18.11.09   
אל הפורום  
  1. למדתם קריאות לפונקציות?  
בתגובה להודעה מספר 0
 
אין לי כל-כך זמן אבל אני רואה 4 בעיות כלליות:
א. למה float ולא double,
ב. לחישובים המורכבים (חזקה, עצרת וכד', למרות שיש אותם בספריות ה-Math.h), תקרא בפונקציות. כל חישוב תבודד בנפרד, תוודא שערך החזרה שלו כמצופה ורק אז תעבור לשלב הבא.
ג. זה חישוב שדיי צועק רקורסיה, אבל לא חובה.
יכול אולם לעזור בקריאות.
ד. למה אתה מדפיס את a6 אבל מאפס אותו מצד שני.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   13:46   18.11.09   
אל הפורום  
  2. האמת שהקוד שלך ממש לא מובן.  
בתגובה להודעה מספר 0
 
אולי לא הבנת את החוקיות מספיק טוב.
הרעיון שכל איטרציה אתה מוסיף ומחסיר את:

x^(2n+1)/(2n+1)!

רעיון אפשרי אחד זה לרוץ בלולאה על המספרים האי זוגיים עם משתנה שכל פעם משתנה לפלוס מינוס1 ולצרף לסכום. גם לא ממש הבנתי את תנאי העצירה. האיבר יכול להיות בין מינוס1 לאחד ולכן אף פעם לא תעצור.
באופן כללי תעבוד ככה:

float sum = 0;
isMinus = 1;
for (int i = 1; i <= 7; i += 2)
{
temp = 1;
factorial = 1;
for (int j = 1; j <= i; j++)
temp *= num; //* num^i ביצוע
for (int j = i; j >= 1; j--)
factorial *= i; //* i!
sum += isMinus * temp/factorial;
isMinus *= -1;
}

הקוד שלך ממש מסובך.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
spidey1  
חבר מתאריך 1.7.02
25536 הודעות
   18:06   18.11.09   
אל הפורום  
  3. מצאתי את הבעיה ופתרתי אותה  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 19.11.09 בשעה 21:21 בברכה, spidey1
 
תודה לכם!


Tears Will Get You Sympathy,
Sweat Will Get You Results!


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

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

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



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