2015-10-02 1 views
2

J'ai un autre problème pour les devoirs. Cette fois je sais où je suis en général, mais je peux voir que j'ai quelques problèmes flagrants avec le code. Récemment j'ai perdu mes clés, et c'est un peu comme ça. Je ne sais pas exactement où je me suis trompé avec mon code, mais j'ai une bonne idée, et j'aimerais que vous m'aidiez à le trouver.Série approximative Pi/Taylor; saisie rapide de l'utilisateur

Le problème est d'approximer pi en utilisant la série Taylor. Maintenant, mon problème n'est pas exactement de l'approcher pour qu'il soit égal à pi. Plutôt approximative pi en utilisant les premiers N termestel que saisi par l'utilisateur. Par exemple, si je devais entrer 2, alors je devrais passer par les 2 premiers puisque N = 2. Mon problème est la façon dont printF le représente (et une variable semble être non initialisée). Voici mon code:

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    //program to calculate series of numbers equal to pi/4 

    //declare variables 

    int num_Terms; 
    int sign= 1; 
    int n; 
    float sum= 0.0; 
    float next_Term; 
    float final_sum; 

    //prompt user for input 

    printf("Enter a value for integer n: "); 
    scanf("%i",&n); 

    //perform calculations 

    for(n = 1; n<= num_Terms; n=n+1) { 
     sum= sum+next_Term; 
     next_Term = sign*(1.0/(2*n-1)); 
     sign = sign*-1; 
    } 
    final_sum = sum*4; 

    //display result 
    printf("\n 4 * %f = %f\n",sum, final_sum); 

    return 0; 
} 
+3

'scanf ("% i", et NUM_TERMS),' 'signe = --sign;' – melpomene

+0

pas être impoli, mais juste un peu crée plus de problèmes. Je suis désolé. –

+0

Je suis d'accord avec le signe négatif si. –

Répondre

1

Je ne sais pas exactement où je suis allé mal avec mon code

Tout d'abord vous numérisez la valeur dans une variable n, puis plus tard en utilisant comme une variable d'itérateur. Changez pour qu'il soit num_Terms. Cela devrait résoudre votre problème principal de ne pas tenir compte du nombre de termes. Ensuite, il est préférable d'initialiser la variable avant de l'utiliser, ce qui éliminerait alors l'avertissement que vous recevez.

int main(void) 
{ 
    //program to calculate series of numbers equal to pi/4 

    //declare variables 

    int num_Terms = 0; 
    int sign  = 1; 
    int n   = 0; 
    float sum  = 0; 
    float next_Term = 0; 
    float final_sum = 0; 

    //prompt user for input 

    printf("Enter a value for integer n: "); 
    scanf("%i",&num_Terms); 

    //perform calculations 

    for(n = 1; n<= num_Terms; n=n+1) { 
    //not too sure if you need to reverse this order of calculation of sum 
     sum = sum + next_Term; 
     next_Term = sign * (1.0/(2*n-1)); 
     sign = sign * -1; 
    } 
    final_sum = sum * 4; 

    //display result 
    printf("\n 4 * %f = %f\n",sum, final_sum); 

    return 0; 
} 
+0

pensé que ce serait quelque chose comme ça. quelque chose de simple. Je vous remercie. –