Les nombres ne sont pas consécutifs

Résolu/Fermé
domxaline - 24 juin 2015 à 13:15
 domxaline - 24 juin 2015 à 16:30
Bonjour,
mon prg s'affiche pas bonne résultat
en cas désordre des nombres, il devait s'afficher
"Les nombres ne sont pas consécutifs"

mais il s'affiche toujours
"Les nombres sont consécutifs"
voilà mon output:
Entrez le nombre de valeur<10 = 3
Entrez les nombres :1 = 5
Entrez les nombres :2 = 2
Entrez les nombres :3 = 1
Les nombres sont consécutifs


import java.util.Scanner;
public class Divers3
{
public static void main(String[] args)
{
int tab[]=new int[10];
boolean flag;
Scanner sc=new Scanner(System.in);
System.out.print("Entrez le nombre de valeur<10 = ");
int nb=sc.nextInt();

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;i++)
{
if(tab[i]!=tab[i+1]+1)
{
flag=false;
//flag=true;
}
}
if(flag=true)
{
System.out.println("Les nombres sont consécutifs");
}
else if(flag=false)
{
System.out.println("Les nombres ne sont pas consécutifs");
}
}
}



3 réponses

Utilisateur anonyme
24 juin 2015 à 16:03
je pense pas que ça vienne de la mais petite erreur dans le code.

dans la comparaison des nombre, tu va comparer le nombre numéro:
0 et 1 : OK
1 et 2 : OK
2 et 3 : OK
3 et 4 : ALERTE car tab[4] n'existe normalement pas. le fait que tu ait déclaré ton tableau directement a 10 fait que tab[4] existe mais tu ne sais pas ce qu'il y a dedans. initialise le avec nb, c'est mieux.
0
j'ai essayé ainsi:

import java.util.Scanner;
public class Divers3
{
public static void main(String[] args)
{
//int i;
int tab[]=new int[10];
boolean flag;
Scanner sc=new Scanner(System.in);
System.out.print("Entrez le nombre de valeur<10 = ");
int nb=sc.nextInt();
int redim=tab[nb-1];
//int tab[]=new int[nb];
for(int i=0;i<nb-1;i++)
{
System.out.print("Entrez les nombres :"+(i+1)+" = ");
tab[i]=sc.nextInt();
}
flag=true;
//flag=false;
for(int i=1;i<nb-1;i++)
{
if(tab[i]!=tab[i-1]+1)
{
flag=false;
//flag=true;
}
}
//flag=true;
if(flag)
{
System.out.println("Les nombres sont consécutifs");
}
else
{
System.out.println("Les nombres ne sont pas consécutifs");
}
}
}

mais output a une erreur
Entrez le nombre de valeur<10 = 4
Entrez les nombres :1 = 5
Entrez les nombres :2 = 8
Entrez les nombres :3 = 3
Les nombres ne sont pas consécutifs

j'ai mis 4 éléments mais il sort que 3 éléments
merci pour votre aide
0
Utilisateur anonyme
24 juin 2015 à 16:30
je vois pas du tout a quoi sert le redim :) mais le tab en commentaire a a l'air utile
0
j'ai corrigé

int tab[]=new int[10];
boolean flag;
Scanner sc=new Scanner(System.in);
System.out.print("Entrez le nombre de valeur<10 = ");
int nb=sc.nextInt();
int redim=tab[nb-1];
//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=1;i<nb-1;i++)
{
if(tab[i]!=tab[i-1]+1)
{
flag=false;
//flag=true;
}
}
//flag=true;
if(flag)
{
System.out.println("Les nombres sont consécutifs");
}
else
{
System.out.println("Les nombres ne sont pas consécutifs");
}

merci beaucoup
0