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 :

Les nombres sont consécutifs


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut Les nombres sont consécutifs
    bonjour
    je sais que j'ai déjà posé une question sur ça
    mais dans le prg la partie "les nombres sont consécutifs" ne marche pas
    dans n'importe quel cas "les nombres ne sont pas consécutifs" marche, veuillez m'aidez svp
    et aussi
    pouvez vous m'expliquez ces lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i=0;i<nb-1;i++) // surtout nb-1 sert à quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(tab[i]!=tab[i+1]+1)
    //tab[i] veut dire quoi? par ex si je donne valeur 5,6,7,8 la première valeur n'est ce pas?
    // tab[i] est diffèrent de tab[i+1]+1 veut dire quoi, 
    //tab[i+1]+1 je ne le comprend pas
    voilà mon prg entier:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    import java.util.Scanner;
    public class Test4 
    {	
    	public static void main(String[] args) 
    	{
    				//int tab[]=new int[nb];
    				boolean flag;
    			    Scanner sc=new Scanner(System.in);
    			    System.out.print("Entrez le nombre de valeur = ");
    			    int nb=sc.nextInt();
    			    int tab[]=new int[nb];
    			    for(int i=0;i<nb;i++)
    			    {
    			      System.out.print("Entrez les nombres :"+(i+1)+" = ");		
    			      tab[i]=sc.nextInt();
    			    }
    			    //flag=true;
    			    flag=false;
    			     for(int i=0;i<nb-1;i++)
    			    {
    			    	//if(tab[i]!=tab[i+1]+1)
    			    	if(tab[i]!=tab[i+1]+1)
    			    	{
    			    	   //flag=false;
    			    	   flag=true;
    			    	}
    			    }
    			    if(flag)
    			    {
    			     System.out.println("Les nombres ne sont pas consécutifs");
    			    }
    			    else   
    			    {
    			      System.out.println("Les nombres sont consécutifs");
    			    }
    			 }
    		}

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Points : 16 092
    Points
    16 092
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i=0;i<nb-1;i++) // surtout nb-1 sert à quoi?
    Pour bien comprendre, tu n'as qu'à modifier le code et mettre < nb. Tu verras bien ce qui se passe
    As tu bien regardé ce qui se passe dans la boucle après?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(tab[i]!=tab[i+1]+1)
    //tab[i] veut dire quoi? par ex si je donne valeur 5,6,7,8 la première valeur n'est ce pas?
    // tab[i] est diffèrent de tab[i+1]+1 veut dire quoi, 
    //tab[i+1]+1 je ne le comprend pas
    Hum. Là pour le coup, c'est vraiment une question basique. Si tu ne maitrise pas cela, tu ne peux pas espérer écrire un programme digne de ce nom.

    Commences par lire ça : http://jmdoudoux.developpez.com/cour....php#syntaxe-8 et reviens à ton code une fois que tu auras compris comment marche un tableau. Cela peut te sembler être une perte de temps à première vue, mais tu perdras beaucoup plus de temps à tâtonner qu'à connaitre une bonne fois pour toute le fonctionnement d'un tableau.

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Utilises tu un IDE (eclipse, netbeans, ..) ? si oui, il faut que tu apprennes a faire du débuggage, cela devrait t'aider énormément a comprendre ce qui se passe dans tes programmes !
    Au vu de tes questions, il est pas possible que tu es écrit ce code !
    Cependant, dans le cas présent, juste en lisant le code on voit le problème, encore faut il le comprendre et sur ce point je rejoint @Carhiboux, il faut lire de la documentation.

    Citation Envoyé par domxaline Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i=0;i<nb-1;i++) // surtout nb-1 sert à quoi?
    a ne pas prendre en compte le dernier élément du tableau.


    Citation Envoyé par domxaline Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(tab[i]!=tab[i+1]+1)
    //tab[i] veut dire quoi? par ex si je donne valeur 5,6,7,8 la première valeur n'est ce pas?
    tab[i] c'est l'élément du tableau correspondant a l'index i
    Les tableaux en java commence a l'index 0, donc :
    - si i = 1 alors tab[i] est egal a 6
    - si i = 3 alors tab[i] est egal a 8

    Citation Envoyé par domxaline Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // tab[i] est diffèrent de tab[i+1]+1 veut dire quoi, 
    //tab[i+1]+1 je ne le comprend pas
    le mieux est de prendre un exemple en affectant une valeur a i
    si i = 1, tab[i] est donc 6 et tab[i + 1] est 7 et donc enfin tab[i+1]+1 est 8
    en resumé tu test si "6 != (7 +1)" soit 6 != 8
    Ce code ne marche donc pas en effet !

    si tu veux que cela fonctionne tu dois ajouter 1 a la valeur de tab[i] afin de verifier s'il est égale a tab[i +1], on a donc :
    tab[i] +1 != tab[i + 1]
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    http://jmdoudoux.developpez.com/cour....php#syntaxe-8
    la site que vous m'avez indiqué où est ce qu'il parle au sujet de "tab[i+1]+1"
    veuillez m'indiquez svp j'ai rien vu pareil
    merci d'avance

  5. #5
    Membre expérimenté 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
    Points : 1 622
    Points
    1 622
    Par défaut
    Le cours ne parle pas de ton cas particulier mais explique de manière générale le fonctionnement des tableaux. Je t'invite donc à le relire car il y a tout un tas d'informations qui te seront très utile (voire indispensable ?).

    Ceci dit il y a une chose que tu dois absolument comprendre (tu avais exactement le même problème dans un de tes précédent post) c'est la différence entre écrire tab[i+1] et tab[i]+1Quand tu écris tab[i+1], tu ne fais que sélectionner une case de ton tableau. Le calcul réalisé (ici i+1) ne sert qu'a déterminer quel élément de ton tableau tu vas utiliser par la suite.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //un tableau avec 6 éléments
    int[] tab = { 1, 3, 5, 8, 9, 12 };
     
    System.out.print( tab[0] ); // affiche 1
    System.out.print( tab[ 1 + 1] ); // = tab[2] = 5
    System.out.print( tab[ 10 % 2 ] ); // = tab[0] = 1
    System.out.print( tab[1+1-2+4] ); // = tab[4] = 9
    System.out.print( tab[5+4] ); // = tab[9] => erreur ArrayIndexOutOfBoundsException, cette case n'existe pas !
    Encore une fois tu ne fais que sélectionner une case et sa valeur.

    Maintenant quand tu écris tab[2] + 2 qu'est qu'il se passe ?

    Dans un premier temps tu sélectionnes la valeur contenue dans tab[2] (soit 5) et tu ajoutes 2 a ce nombre.

    donc si on écris tab[1+1-2+4] + 5 = tab[4] + 5 = 9 + 5 = 14 !Le calcul n'est effectué qu'après avoir sélectionner la valeur dans le tableau!

    Donc maintenant si tu comprends ça, tu devrais facilement comprendre ce que fais ton code quand tu écris des choses telle que tab[i + 2] + 2 avec i variable.

    cdt.

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par domxaline Voir le message
    http://jmdoudoux.developpez.com/cour....php#syntaxe-8
    la site que vous m'avez indiqué où est ce qu'il parle au sujet de "tab[i+1]+1"
    veuillez m'indiquez svp j'ai rien vu pareil
    merci d'avance
    Cela signifie que tu dois vraiment lire de la documentation, car pour le moment tu sembles pas comprendre ce que tu écris et cela va te poser de gros problèmes pour aller plus loin !
    regarde ce que j'ai poster juste avant ton message.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    merci beaucoup
    je vais lire encore une fois
    votre explication aussi m'aide beaucoup

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut

    //un tableau avec 6 éléments
    int[] tab = { 1, 3, 5, 8, 9, 12 };

    System.out.print( tab[0] ); // affiche 1
    System.out.print( tab[ 1 + 1] ); // = tab[2] = 5
    System.out.print( tab[ 10 % 2 ] ); // = tab[0] = 1
    System.out.print( tab[1+1-2+4] ); // = tab[4] = 9
    System.out.print( tab[5+4] ); // = tab[9] => erreur ArrayIndexOutOfBoundsException, cette case n'existe pas !
    j'ai compris sauf cette ligne
    System.out.print( tab[ 10 % 2 ] ); // = tab[0] = 1
    dans ce condition comment il s'affiche tab[0]?

  9. #9
    Membre expérimenté 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
    Points : 1 622
    Points
    1 622
    Par défaut
    Le '%' en Jave est l'opérateur de modulo. Or 10 modulo 2 = 0 et tab[0] = 1

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    ok j'ai compris

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    Ne me disputez pas si je racontes des bêtises, mais j'essaye de comprendre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int tab[]=new int{5,2,7,1};
    mon prg commence ainsi:
    for(int i=1;i<nb;i++)
    {
     if tab[i] != tab[i-1]+1;
     
     {
        flag= false;
     }
    }
    la premier fois:
    if tab[i] != tab[i-1]+1;
    //tab[1] != tab[5-1]+1
    //tab[1] != tab[4]+1
    //tab[1] != tab[1]+1; dans la quatrième position il ya 1; tab[5] != tab [2]

    la deuxième fois:
    if tab[i] != tab[i-1]+1;
    //tab[2] != tab[2-1]+1
    //tab[2] != tab[1]+1 //la premier position il y a 5
    //tab[2] != tab[5]+1; //tab[2] != tab[6]

    la troisième fois:
    if tab[i] != tab[i-1]+1;
    //tab[3] != tab[7-1]+1
    //tab[3] != tab[6]+1 //la ????????

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ton tableau contient 5, 2, 7, 1, donc tab[i] quand i vaut 1, c'est 2, et tab[i-1] c'est tab[0] donc 5.

    Donc, la première fois, c'est plutôt :

    if ( tab[i] != tab[i-1]+1 ) soit if ( tab[1] != tab[0]+1 ) soit if ( 2 != 5+1 ) soit if ( 2!=6 )...qui est vrai.

    Puis, la deuxième fois (i vaut 2) :

    if ( tab[i] != tab[i-1]+1 ) soit if ( tab[2] != tab[1]+1 )soit if ( 7 != 2+1 ) soit if ( 7!=3 )... qui est aussi vrai

    Puis, la troisième fois (i vaut 3):

    if ( tab[i] != tab[i-1]+1 ) soit if ( tab[3] != tab[2]+1 ) soit if ( 1 != 7+1 ) soit if ( 1!=8 )... qui est vrai également.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ( tab[i] != tab[i-1]+1 ) 
    soit if ( tab[1] != tab[0]+1 ) 
    soit if ( 2 != 5+1 ) 
    soit if ( 2!=6 )...qui est vrai.
    par hasard vous n'avez pas trompé les ligne suivantes ?
    soit if ( 2 != 5+1 )
    soit if ( 2 != 6 )...qui est vrai.

    peut être s'écrit comme ceci non?
    soit if ( 1 != 5+1 )
    soit if ( 1 != 6 )...qui est vrai.

    cdt

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    tab[i] c'est la valeur qui se trouve dans la case d'indice i du tableau tab.

    Ta boucle est définie par for(int i=1;i<nb;i++)La première valeur de i est donc 1 (un). Donc, à la première itération, la ligne if ( tab[i] != tab[i-1]+1 ), qui est exécutée avec i qui vaut 1, équivaut à exécuter :

    if ( tab[1] != tab[1-1]+1 ). Comme 1 - 1 vaut 0, ça équivaut à exécuter if ( tab[1] != tab[0]+1 ).

    Le tableau est défini par int tab[]=new int[]{5,2,7,1}, donc:
    • tab[0]=5
    • tab[1]=2
    • tab[2]=7
    • tab[3]=1


    Donc exécuter if ( tab[1] != tab[0]+1 ) équivaut à exécuter if ( 2 != 5+1 ), parce que tab[1] contient 2 (en orange), et tab[0] contient 5 (en bleu).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Points : 16 092
    Points
    16 092
    Par défaut
    @domxaline : je pense que tu n'as pas compris le concept de la boucle for. Et que c'est ça ton problème en fait. Tu manques de bases.

    Commence par relire ceci par exemple : http://jmdoudoux.developpez.com/cour....php#syntaxe-7

    Et ensuite, lorsque tu es confronté à un problème, tu dois le décomposer en autant d'éléments le plus simple possible.

    Ici, tu ne sembles pas savoir d'où vient l'erreur, ou en tout cas ce que fait ton code, donc tu pars du plus simple, et tu vas au plus compliqué.

    1. Écrire le code pour parcourir toutes les cases du tableau, et afficher : la valeur de l'indice (ta variable i) et la valeur du tableau associée (tableau[i]).

    Une fois que ça marche, tu ajoutes

    2. afficher la valeur de la case d'avant, et l'indice de la case d'avant.

    Une fois que ça marche tu ajoute :

    3. Les tests pour vérifier que ce sont bien deux nombres consécutifs

    etc etc...

    Ton problème, c'est que tu ne maitrises pas les bases, et que tu essayes de tout faire d'un coup. Tu vois bien que cela ne marche pas. Donc décompose en problèmes très simples, et assure toi que tout est bon. Même ce qui te parait à première vue évident. C'est comme ca que tous les développeurs font. On commence par un truc très simple, et on ajoute des trucs plus compliqués au fur et à mesure. Alors avec l'expérience, tu commence par ecrire directement des trucs un peu plus complexes, mais la démarche reste exactement la même.

    Et si tu utiliser un IDE, passe dans ton code en debug, cela te sera d'une grande aide je pense.

    Bon courage.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    Bonjour
    j'ai compris ainsi,vérifiez svp,est ce que c'est bien ça?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int tab[ ] = new int { 5, 2, 7, 1} ;
    for(int i=1 ; i< nb ; i++)
    { 
       If( tab[i] != tab[i-1]+1 ; 
      { 
        flag=false ;
      }
    }
    If( tab[ i ] != tab[ i - 1]+1 ;
    If ( tab[1] != tab[1-1] + 1 ) ; // ici i est à 1 ; 1-1 = 0
    If ( tab[1] != tab[0] + 1 ) ; // dans la position 0, valeur est 5. (à voir : 5, 2, 7, 1)
    If ( tab[1] != tab(5+1) // ici la valeur 0 (position) est 6
    // maintenant il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 2
    If( 2 != 6) // 2 est différent de 6, alors c’est vrai

    If( tab[ i ] != tab[ i-1 ]+1 ;
    If( tab[2] != tab[2-1]+1 ; // ici i est à 2 ;
    If( tab[2] != tab[1]+1 ; // 2-1 =1; dans la position 1 valeur est 2. (à voir : 5, 2, 7, 1 )
    // maint. il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 7
    If ( 7 != 2+1)
    If( 7 != 3 // 7 est différent de 3, alors c’est vrai

    If( tab[ i ] != tab[ i-1 ]+1 ;
    If( tab[3] != tab[3-1]+1 ; // ici i est à 3 ;
    If( tab[3] != tab[2]+1 ; // 3-1= 2 dans la position 2, valeur est 7. (à voir : 5, 2, 7, 1 )
    // maintenant. il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 1
    If ( 1 != 7+1)
    If( 1 != 8 // 1 est différent de 8, alors c’est vrai

    If( tab[ i ] != tab[ i-1 ]+1 ;
    If( tab[4] != tab[4-1]+1 ; // ici i est à 4 ;
    If( tab[4] != tab[3]+1 ; // 4-1 = 3 dans la position 3, valeur est 1. (à voir : 5, 2, 7, 1 )
    // maint. il vérifie avec la prochaine valeur, prochaine valeur dans le tableau
    // il n’y a rien

    -----------------------------------------------------------------------


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int tab[ ] = new int { 4, 5, 6, 7} ;
    for(int i=1 ; i< nb ; i++)
    { 
       If( tab[i] != tab[i-1]+1 ; 
      { 
        flag=false ;
      }
    }
    If( tab[ i ] != tab[ i - 1]+1 ;
    If ( tab[1] != tab[1-1] + 1 ) ; // ici i est à 1 ; 1-1 = 0
    If ( tab[1] != tab[0] + 1 ) ; // dans la position 0, valeur est 4. (à voir : 4, 5, 6, 7)
    If ( tab[1] != tab(4+1) // ici la valeur (position 0) est 5
    // maintenant il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 5
    If( 5 != 5) // 5 est différent de 5, alors c’est false

    If( tab[ i ] != tab[ i - 1]+1 ;
    If ( tab[2] != tab[2-1] + 1 ) ; // ici i est à 2 ; 2-1 = 1
    If ( tab[2] != tab[1] + 1 ) ; // dans la position 1, valeur est 5. (à voir : 4, 5, 6, 7)
    If ( tab[2] != tab(5+1) // ici la valeur (position1) est 6
    // maintenant il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 6
    If( 6 != 6) // 6 est différent de 6, alors c’est false

    If( tab[ i ] != tab[ i - 1]+1 ;
    If ( tab[3] != tab[3-1] + 1 ) ; // ici i est à 3 ; 3-1 = 2
    If ( tab[3] != tab[2] + 1 ) ; // dans la position 2, valeur est 6. (à voir : 4, 5, 6, 7)
    If ( tab[3] != tab(6+1) // ici la valeur (position2) est 7
    // maintenant il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 7
    If( 7 != 7) // 7 est différent de 7, alors c’est false

    If( tab[ i ] != tab[ i - 1]+1 ;
    If ( tab[4] != tab[4-1] + 1 ) ; // ici i est à 4 ; 4-1 = 3
    If ( tab[4] != tab[3] + 1 ) ; // dans la position 4, valeur est 7. (à voir : 4, 5, 6, 7)
    If ( tab[4] != tab(7+1) // ici la valeur (position3) est 8
    // maintenant il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est rien

  17. #17
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par domxaline Voir le message
    If( tab[ i ] != tab[ i - 1]+1 ;
    If ( tab[1] != tab[1-1] + 1 ) ; // ici i est à 1 ; 1-1 = 0
    If ( tab[1] != tab[0] + 1 ) ; // dans la position 0, valeur est 5. (à voir : 5, 2, 7, 1)
    If ( tab[1] != tab(5+1) // ici la valeur 0 (position) est 6
    Oui, enfin, if ( tab[1] != 5+1 (le tab n'a plus rien à faire ici)
    Citation Envoyé par domxaline Voir le message
    // maintenant il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 2
    If( 2 != 6) // 2 est différent de 6, alors c’est vrai
    If( tab[ i ] != tab[ i-1 ]+1 ;
    If( tab[2] != tab[2-1]+1 ; // ici i est à 2 ;
    If( tab[2] != tab[1]+1 ; // 2-1 =1; dans la position 1 valeur est 2. (à voir : 5, 2, 7, 1 )
    // maint. il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 7
    If ( 7 != 2+1)
    If( 7 != 3 // 7 est différent de 3, alors c’est vrai
    If( tab[ i ] != tab[ i-1 ]+1 ;
    If( tab[3] != tab[3-1]+1 ; // ici i est à 3 ;
    If( tab[3] != tab[2]+1 ; // 3-1= 2 dans la position 2, valeur est 7. (à voir : 5, 2, 7, 1 )
    // maintenant. il vérifie avec la prochaine valeur, prochaine valeur dans le tableau est 1
    If ( 1 != 7+1)
    If( 1 != 8 // 1 est différent de 8, alors c’est vrai
    Jusque là ça va

    Citation Envoyé par domxaline Voir le message
    If( tab[ i ] != tab[ i-1 ]+1 ;
    If( tab[4] != tab[4-1]+1 ; // ici i est à 4 ;
    If( tab[4] != tab[3]+1 ; // 4-1 = 3 dans la position 3, valeur est 1. (à voir : 5, 2, 7, 1 )
    // maint. il vérifie avec la prochaine valeur, prochaine valeur dans le tableau
    // il n’y a rien
    Normalement si nb vaut 4 (on ne sait pas, tu ne l'as pas indiqué, mais ce serait logique — d'ailleurs pourquoi utiliser nb et pas tab.length ?), cette itération ne sera pas faite. Et heureusement, parce que dès la récupération de tab[i] avec i = 4, tu aurais une ArrayIndexOutOfBoundException (on a déjà vu ça dans au moins une de tes précédentes discussions) !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  18. #18
    Expert éminent sénior
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Points : 16 092
    Points
    16 092
    Par défaut
    A priori, c'est cela. Par contre, ta variable nb n'est pas déclaré dans le code que tu montres.

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    voilà mon programme:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    import java.util.Scanner;
    public class Test4 
    {	
    	public static void main(String[] args) 
    	{
    		char reponse='o';
    		do
    		{
    		boolean flag;
    	    Scanner sc=new Scanner(System.in);
    	    System.out.print("Entrez le nombre de valeur= ");
    	    int nb=sc.nextInt();
    	    int tab[]=new int[nb];	
    	    for(int i=0;i<nb;i++)
    	    {
    	      System.out.print("Entrez les nombres :"+(i+1)+" = ");		
    	      tab[i]=sc.nextInt();
    	    }
    	    flag=true;
    	    for(int i=1;i<nb;i++)
    	    {
    	    	if(tab[i]!=tab[i-1]+1)
    	    	{
    	    	   flag=false;
    	    	}
    	    }
    	    if(flag)
    	    {
    	     System.out.println("Les nombres sont consécutifs");
    	    }
    	    else  
    	    {
    	      System.out.println("Les nombres ne sont pas consécutifs");
    	    }
    	    System.out.println("Voulez vous ressayé, o/n?");
    	    Scanner sc1=new Scanner(System.in);
    	    reponse=sc1.nextLine().charAt(0); 
    		}while(reponse=='o');
    		System.out.println("Fin de programme,Au revoir.");
     
    	}
    }

  20. #20
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Et pourquoi créer un tableau de 10 éléments et lire sa taille après : autant lire la taille d'abord, puis dimensionner le tableau avec cette taille lue. Ce n'est pas plus compliqué et tu ne réserves que la mémoire utile, et ensuite tu peux parcourir ton tableau avec tab.length, au lieu de nb.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Les nombres ne sont pas consécutifs
    Par domxaline dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 24/06/2015, 16h27
  2. Réponses: 4
    Dernier message: 22/07/2011, 09h33
  3. Réponses: 2
    Dernier message: 14/09/2010, 10h21
  4. Réponses: 6
    Dernier message: 15/10/2009, 21h18
  5. Réponses: 9
    Dernier message: 26/04/2007, 13h53

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