IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Calcul est faux


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut Calcul est faux
    bonjour
    troisième ligne de mon output est faux,quelqu'un peut me dire pourquoi svp
    suite[0]1
    suite[1]1
    2
    3
    5
    8
    13
    21

    je m'explique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    suite[i]=suite[i-1]+suite[i-2];
    i = 2 alors
    (2-1)+(2-2)=1 mais au lieu de 1,mon output est 2
    les suites sont bon(3-1)+(3-2)=3
    (4-1)+(4-2)=5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    import java.util.Scanner;
    public class Test4 
    {	
    	public static void main(String[] args) 
    	{
    		int suite[]=new int [8];
    		suite[0]=1;
    		suite[1]=1;
    		System.out.println("suite[0]"+suite[0]);
    		System.out.println("suite[1]"+suite[1]);
    		for(int i=2;i<suite.length;i++)
    		{	
    			 suite[i]=suite[i-1]+suite[i-2];
    			//suite[i]=suite[i-1]+suite[i-1];
    			System.out.println(suite[i]);
    		}
    	}
    }
    merci d'avance

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    suite[i]=suite[i-1]+suite[i-2] n'est pas égal suite[i]= (suite[i] - 1 ) + (suite[i] - 2).

    Là tu écris suite[2] = suite[1] + suite[0], soit suite[2] = 1 + 1 = 2

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    je ne comprend pas bien
    svp expliquez moi
    for i équivaut 2 ??
    je confonds tous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                    suite[0]=0;
    		suite[1]=1;
    		for(int i=2;i<suite.length;i++)
    		{	
    		     suite[i]=suite[i-1]+suite[i-2];
                         System.out.println(suite[i]);
    		}
    merci d'avance

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 49
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    suite[0]=1;
    suite[1]=1;
    System.out.println("suite[0]"+suite[0]); // ici ca affichera 1
    System.out.println("suite[1]"+suite[1]) // ici ca affichera 1 également;
    ....
    for(int i=2;i<suite.length;i++)
    {	
    	suite[i]=suite[i-1]+suite[i-2];//pour i = 2 => 1 + 1 = 2
    ....
    Par contre pour ton deuxième message tu as corrigé ton erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    suite[0]=0;
    		suite[1]=1;
    Ici tu aura bien 1 pour i = 2 (car 1 + 0 = 1)

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=2;i<suite.length;i++)
    {	
    	suite[i]=suite[i-1]+suite[i-2];//pour i = 2 => 1 + 1 = 2
    ....
    premier fois il fait
    i=2 alors (2-1) + (2-2) ça fait 1+0 =1 je suis d'accord
    deuxième fois
    i=3 alors (3-1) + (3-2) ça fait 2+1 =3 je suis d'accord
    troisième fois
    i=4 alors (4-1) + (4-2) ça fait 3+2 =5 je suis d'accord
    quatrième fois
    i=5 alors (5-1) + (5-2) ça fait 4+3 =7 je ne suis pas d'accord
    cinquième fois
    i=6 alors (6-1) + (6-2) ça fait 5+4 =9 je ne suis pas d'accord

    ainsi de suite............
    car mon output s'affiche comme ceci:
    2
    3
    5
    8
    13
    21

    merci beaucoup pour vos aides

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 49
    Par défaut
    Bonjour,

    Bon tu nous fais une suite de Fibonacci mais faut que l'on soit d'accord sur la valeur du premier terme (suite[0]) est ce qu'il vaut 1 ou 0 (les 2 sont possibles justement... mais le résultat sur la suite n'est pas le même évidemment, enfin le résultat sera juste décalé de 1).
    Je précise que tu le fais commencer à 1 en attendant les résultats pour suite[0] = 0.

    Dans ton dernier message tu mélanges carrément les 2:
    premier fois il fait
    i=2 alors (2-1) + (2-2) ça fait 1+0 =1 je suis d'accord
    deuxième fois
    i=3 alors (3-1) + (3-2) ça fait 2+1 =3 je suis d'accord
    pour la "deuxième fois" je ne suis pas d'accord du tout : dans ton cas i = 3 donc i - 1 = 2 et le résultat de suite[2] = 1 (tu l'as écrit juste au dessus) donc le résultat pour suite[3] = 2 et non 3 (car suite[2] + suite[1] = 1 + 1)

    https://fr.wikipedia.org/wiki/Suite_de_Fibonacci

    Donc pour suite[0] = 1 ton output est juste Fais le commencer a 0 et tu aura ce que tu attends

  7. #7
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Citation Envoyé par domxaline Voir le message
    [CODE]for(int i=2;i<suite.length;i++)
    {

    premier fois il fait
    i=2 alors (2-1) + (2-2) ça fait 1+0 =1 je suis d'accord
    deuxième fois
    i=3 alors (3-1) + (3-2) ça fait 2+1 =3 je suis d'accord
    troisième fois
    i=4 alors (4-1) + (4-2) ça fait 3+2 =5 je suis d'accord
    quatrième fois
    i=5 alors (5-1) + (5-2) ça fait 4+3 =7 je ne suis pas d'accord
    cinquième fois
    i=6 alors (6-1) + (6-2) ça fait 5+4 =9 je ne suis pas d'accord
    C'est FAUX. Ce que tu écris en Java ne corresponds pas à ce que tu nous décris ici.

    Quand tu écris suite[i-2] avec i = 2, ce n'est pas égal à 2-2 !
    C'est égal a suite[ 2 - 2 ] = suite[ 0 ] = la valeur que tu y met (tu as changé cette valeur dans tes 2 premier posts)

    donc avec ton code, suite[i]=suite[i-1]+suite[i-2].

    la première fois il fait
    i=2 alors suite[2] = suite[2-1] + suite[2-2] = suite[1] + suite[0] = 0 + 1 = 1 (ça va dépendre des valeurs que tu mets à l'initialisation de suite[0] et suite[1])

    Effectivement dans ton cas le résultat est le même, car (2-1) est bien égal à suite[1] et (2-2) à suite[0]. Mais le calcul lui n'est pas le même !

    On le voit dans ton premier post car tu avais écris suite[0]=1 qui n'est PAS ÉGAL à (2-2) => d'où ma première réponse c'est normal car le calcul qui est fait n'est pas celui que tu penses.

Discussions similaires

  1. Indiquer qu'un calcul est en cours
    Par 65days dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 06/08/2009, 10h28
  2. REQUEST_FILENAME est faux dans htaccess
    Par Devether dans le forum Apache
    Réponses: 1
    Dernier message: 08/01/2009, 11h54
  3. Unité de calcul est variable
    Par kfarid dans le forum Access
    Réponses: 1
    Dernier message: 02/06/2008, 14h14
  4. [VBA][SQL] Paramètre manquant (ce qui est faux)
    Par CinErarY dans le forum Access
    Réponses: 4
    Dernier message: 24/12/2006, 17h10
  5. Réponses: 4
    Dernier message: 26/08/2006, 02h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo