Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programme qui retourne la valeur de pi/

Sujet résolu
    16 septembre 2017 à 19:59:29

    Bonsoir ! Je vous demande de l'aide pour un programme qui calcule la valeur de pi/4 avec cette suite : 1 - 1/3 + 1/5 - 1/7 + 1/9 etc

    Le résultat affiche toujours 1 alors que cela devrait être environ 0,78. Il n'y a normalement pas d'erreur de syntaxe mais le calcul ne fonctionne pas. Merci d'avance !

    import java.util.Scanner;
    
    public class  a{
    
    	public static void main(String[] args) {
    		// Permet de calculer une valeur approchee de pi/4 a epsilon pres, sachant que pi/4 
    		// est la limite de la serie
    		Scanner sc = new Scanner(System.in);
    		double epsilon,x,somme;
    		int y,n;
    		System.out.print("Saisissez la valeur d'epislon : "); // saisir par exemple 0.1
    		epsilon = sc.nextDouble();
    		y = 1;   // valeur du denominateur
    		x = 1;   // valeur absolue du terme general, est sous forme de fraction
    		n = 1;   // n est un entier dont le signe alterne entre positif et negatif (n commence a 1)
    		somme = 1; 
    		while (x>= epsilon) {
    			if (n==1)
    			{
    				n -= 1;
    				y += 2;
    				x = (1/y);
    				somme -= x;
    			}
    			else
    			{
    				n += 1;
    				y += 2;
    				x = (1/y);
    				somme += x;
    			}		
    	}
    	   System.out.print("La valeur de la somme est de : " + somme );
    	   sc.close();
    	}
    }



    -
    Edité par Phyleau 16 septembre 2017 à 20:00:20

    • Partager sur Facebook
    • Partager sur Twitter
      16 septembre 2017 à 20:19:00

      Bonsoir, /!\ JavaScript est différent de JAVA. Je déplace dans le forum JAVA.
      • Partager sur Facebook
      • Partager sur Twitter
        16 septembre 2017 à 20:27:30

        Merci, j'y ai pensé mais je n'ai pas assez cherché ><
        • Partager sur Facebook
        • Partager sur Twitter
          17 septembre 2017 à 2:13:17

          Bonsoir, 

          Je ne comprends pas trop ce que tu cherches à faire mais j'ai l'impression que le problème vient de la condition pour ta boucle while 

          Pour une valeur epsilon entrée supérieure à 1 le code de ta boucle n'est pas exécuté ( logique x >= epsilon or x = 1 )

          D'où le 1.0 via le System.out.print()

          Et pour une valeur inférieure la boucle est infini... 

          • Partager sur Facebook
          • Partager sur Twitter
            17 septembre 2017 à 14:28:13

            Bonjour,

            Ton problème vient du fait que y est un entier. En Java, entier / entier donne une division entière. 1 / y est donc une division entière qui donne 0.

            Pour avoir une division réelle, il suffit qu'un des deux opérandes soit réel. Remplacer 1 par 1.0 devrait résoudre ton problème.

            Tu peux aussi simplifier le changement de signe en faisant "n = -n;". Ainsi, tu n'auras plus besoin de if.

            • Partager sur Facebook
            • Partager sur Twitter
              23 septembre 2017 à 11:10:39

              Super cela fonctionne, merci pour vos explications, cela ne fonctionnait pas en effet car y était un entier ! :)

              Et pour la boucle while on doit entrer un réel < 1 (très petit pour avoir plus de précision pour la valeur de pi/4 comme 0,01 par exemple) sinon c'est vrai qu'on n'entre pas dans la boucle.

              • Partager sur Facebook
              • Partager sur Twitter
                23 septembre 2017 à 14:45:35

                Oublie pas de marquer ton post comme resolu !
                • Partager sur Facebook
                • Partager sur Twitter
                @autor VinYarD

                Programme qui retourne la valeur de pi/

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown