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

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 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 confirmé
    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
    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
    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
    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

  4. #4
    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
    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.

  5. #5
    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
    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

  6. #6
    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
    merci beaucoup
    je vais lire encore une fois
    votre explication aussi m'aide beaucoup

  7. #7
    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

    //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]?

  8. #8
    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
    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

+ Répondre à la discussion
Cette discussion est résolue.

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