Erläuterung des Algoritmus



  • tach zusammen..... ich denke das ist etwas viel auf einmal aber ich dachte ich versuche es einfach...
    Kann mir bitte einer die Erläuterung des Algoritmus aufschreiben, weil ich verstehe dieses Progi einfach nicht! 😕
    Danke schön................

    #include <conio.h>
    #include <math.h>
    
    void main(){
    
    textattr(0x1f); clrscr();
    
    double          x_deg,                           //Definitionen
    		x_rad,
    		tempZ,
    		tempN,
    		xx_rad,
    		sum,
    		glied,
    		xx_deg;
    
    unsigned	a;
    
    int		vz;
    
    cprintf("Bitte geben Sie die Gradzahl an: ");    //Eingabe der Gradzahl
    cscanf("%lf",&x_deg) ;getch() ;clrscr();         //Zuweisung an x_deg
    
    --------------------------------Berechnung  -90° < X > +90°--------------------
    
    xx_deg = x_deg;                                  
    
    while(xx_deg > 360.0)           	       	 
    xx_deg = xx_deg-360.0;                           
    
    while(xx_deg < -360.0)         			 
    xx_deg = xx_deg+360.0;                           
    
    if(xx_deg > 180.0){                              
       if(xx_deg > 270.0){                           
          xx_deg -= 360.0;                           
       }
       else{                                         
          xx_deg -= 180.0;                           
          xx_deg = -xx_deg;                          
       }
    }
    else                                             
       if(xx_deg > 90.0){                            
          xx_deg -= 180.0;                           
          xx_deg = -xx_deg;                          
       }
    
    if(xx_deg < -180.0){                             
       if(xx_deg < -270.0){                          
          xx_deg += 360.0;                           
       }
       else{                                         
          xx_deg += 180.0;                           
          xx_deg = -xx_deg;                          
       }
    }
    else                                             
      if(xx_deg < -90.0){                            
         xx_deg += 180.0;                            
         xx_deg = -xx_deg;                           
      }
    
    -------------------------Sinusfunktion-----------------------------------------
    
    x_rad = M_PI / 180.0 * xx_deg;                   
    xx_rad = x_rad * x_rad;                          
    
    cprintf("Bei einem Winkel von %lf Grad, ist Xrad=%lf\r\n",x_deg,x_rad);
    cprintf("\r\n");
    
    tempZ = x_rad;                                   
    tempN = 1;                                       
    sum = tempZ / tempN;                             
    a = 0;                                           
    vz = 1;                                          
    glied = tempZ;                                   
    
    while(fabs(glied) > 1.0e-9){                     
       a += 2;                                       
       vz = -vz;                                     
       tempZ *= xx_rad;                              
       tempN *= a * (a + 1);                         
       glied = vz * (tempZ / tempN);                 
       sum += glied;                                 
       cprintf("%30lf%20.15lf\r\n",tempN,glied);     
    }//endWhile
    
    cprintf("\r\nsin(%lfø)= %lf", xx_deg, sum);      
    getch();
    
    }//endFunction main() ==========
    

    <hume sagt>Code-Tags eingefügt</hume sagt>



  • Editier bitte das ganze erstmal und mach Codetags rein. Dann kann man es leichter lesen. Ich glaube das Programm macht nicht so viel. Ein wenig (sehr umständliches) rumspielen/umrechnen mit Winkeln.



  • Leider kann ich mein Beitrag aus irgend einem Grund auch immer nicht editieren!
    Es funktioniert nicht! ---> doch jetzt funktioniert es :p

    In diesem Programm handelt es sich um eine Sinus Kurve wo die Werte des Hauptwertebereichs zwischen -90° < X > +90° liegen/berechnet werden!

    Nur den Syntax/Quellcode zu analysieren/Erläutern fällt mir schwer!!!

    Danke 😃



  • Kann mir den keiner Helfen???? 🙄



  • Es wird der Sinus von Hand per Reihenenentwicklung um 0 berechnet. Wasn Quatsch
    \sin (x) = \left\sum_{i=0}^{\infty}(-1)^n\frac{x^{2n+1}}{(2n+1)!}\right.

    Da dies eine alternierende Leibniz-Reihe ist, kann man die gewünschte Genauigkeit am n+1-Glied erkannt werden. Ist diese kleiner gleich, der gewünschten Genauigkeit, so kann die Reihe bis n als Grenzwert für das Ergebnis genutzt werden.

    Bitte im dev-forum betrachten http://www.c-plusplus.net/forum/viewtopic.php?p=418193#418193


Anmelden zum Antworten