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

Collection et Stream Java Discussion :

Tableau et plateau en Java


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut Tableau et plateau en Java
    Bonjour All,

    Je me permet de venir vers vous car comme vous vous en doutez j'ai un petit soucis sur java.

    je suis actuellement au Cnam et j'ai une partie d'exercice sur les tableaux que je n'arrive pas à résoudre.

    Ci-dessous vous trouverez l'énoncé de l'exercice:

    a) Ecrire un code pour créer un tableau 'TAB' de taille N et demander à un utilisateur de le remplir avec des lettres minuscules .
    b) On appelle 'plateau' une succession de lettres identiques . La taille d'un plateau est égale au nombre de lettres identiques . Ecrire un code qui calcule et affiche la plus grande taille T de plateau contenus dans le tableau 'TAB' .
    Exemple : si le tableau 'TAB' contient les lettres suivantes : abbaaaccdfaaagge , le programme devra afficher que T vaut 3 .


    Donc la partie a) rien de bien compliqué mon programme ressemble à ça:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Exo2 {
     
    	public static void main (String [] arg){
    		int N,i;
    		System.out.println("Donner la taille du tableau");
    		N = Lire.i();
    		char [] tab  = new char [N];
    		for(i=0;i<N;i=i+1){
    			System.out.println("Donner la lettre n "+(i+1));
    			tab[i]=Lire.c();
    			              }
    		                                   }
    		          }
    Et la pour la partie B je bloque complètement:

    j'ai commencé par faire une boucle for incrémenté dans une autre boucle for... mais je n'ai pas l'impression que ce soit la bonne solution..

    En ce moment même je pense q'un boucle While du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while (i<N-1) 
    {
    if (tab[i+1]==tab[i])
    {
    int compt=compt+1
    }
     
    }
    Mais cela ne fonctionne pas.

    et je ne voit pas de solution à mon problème..

    Sachez que je suis en première année et que je n'ai pas le droit d'utiliser de fonctions ect pour l'instant.

    boucles for; while; if uniquement.

    Merci d'avance .

    En l'attente de votre retour

    Baoshengdady.

  2. #2
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par baoshengdady;8109221
    [CODE
    while (i<N-1)
    {
    if (tab[i+1]==tab[i])
    {
    int compt=compt+1
    }

    }[/CODE]
    Ici, compt est local au bloc du if (tab[i+1]==tab[i]) : il n'existe que dans le bloc, et, donc, ne peut compter les caractères successifs. En plus, on ne peut pas écrire ça : int compt = quelquechose qui dépend de compt, car ce qui est utilisé dans le calcul doit exister et avoir une valeur avant de pouvoir s'en servir, ce qui n'est pas le cas, parce que justement on le créé ici.

    Donc il te faut déclarer compt en dehors de la boucle.

    Fait bien un for pour parcourir tab, déclare compt en dehors de ce for.
    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.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut
    Bonjour,

    Merci pour ton retour!!!

    Je me retrouve donc avec ceci:

    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
    public class Exo2 {
     
    	public static void main (String [] arg){
    		int N,i,compt;
    		compt=0;
    		System.out.println("Donner la taille du tableau");
    		N = Lire.i();
    		char [] tab  = new char [N];
    		for(i=0;i<N;i=i+1){
    			System.out.println("Donner la lettre n "+(i+1));
    			tab[i]=Lire.c();
    			              }
    		while(i<N-1){
    			if(tab[i+1]==tab[i]){
    				compt=compt+1;
    				i=i+1;
    			}
    		}
    		System.out.println(compt);
    		                                   }
    		          }
    mais cela ne règle pas le problème :

    Si je met par exemple 5 en taille de tableau: avec comme valeur ;aaazer.

    le retour sur éclipse est :
    Donner la taille du tableau
    5
    Donner la lettre n 1
    a
    Donner la lettre n 2
    a
    Donner la lettre n 3
    a
    Donner la lettre n 4
    z
    Donner la lettre n 5
    e
    0

    que doit-je faire pour éviter cela ?

    Merci :p

  4. #4
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Là, tu incrémentes l'index de parcours du tableau si les 2 caractères successifs sont égaux, donc jamais si ce n'est pas le cas. Il faut bien sûr parcourir tous les caractères : fait un for, donc.
    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.

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut
    Bonsoir,

    Alors je suis passé par une boucle for..


    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
    public class Exo2 {
     
    	public static void main (String [] arg){
    		int N,i,compt;
    		compt=0;
    		System.out.println("Donner la taille du tableau");
    		N = Lire.i();
    		char [] tab  = new char [N];
    		for(i=0;i<N;i=i+1){
    			System.out.println("Donner la lettre n "+(i+1));
    			tab[i]=Lire.c();
    			              }
    		for(i=0;i<N-1;i=i+1){
    			if (tab[i+1]==tab[i]){
    				compt=compt+1;
    			}
    		}
    		System.out.println(compt);
    		                                   }
    }

    Mais le résultat n'est toujours pas bon.

    en plus si le tableau 'TAB' contient les lettres suivantes : abbaaaccdfaaagge , le programme devra afficher que T vaut 3 .

    et dans mon programme si je rentre les lettres dites voici mon retour :
    Donner la taille du tableau
    16
    Donner la lettre n 1
    a
    Donner la lettre n 2
    b
    Donner la lettre n 3
    b
    Donner la lettre n 4
    a
    Donner la lettre n 5
    a
    Donner la lettre n 6
    a
    Donner la lettre n 7
    c
    Donner la lettre n 8
    c
    Donner la lettre n 9
    d
    Donner la lettre n 10
    f
    Donner la lettre n 11
    a
    Donner la lettre n 12
    a
    Donner la lettre n 13
    a
    Donner la lettre n 14
    g
    Donner la lettre n 15
    g
    Donner la lettre n 16
    e
    7
    Alors que le retour devrait donner 3 .

    Ou est mon erreur ?

    Merci d'avance.

    Bao.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    tu as pensé à faire quelque chose (augmenter la taille repérée) lorsque tu restes sur la même lettre consécutives.
    Ton erreur est que tu ne fais rien quand ce n'est pas le cas. Ne crois-tu pas qu'il y a aussi des choses à faire quand la lettre est différente ?

    En fait, tu devrais faire un exercice intermédiaire pour chercher plus facilement :
    exercice : donner la liste complète des plateaux que tu rencontres, dans l'ordre. Avec leur lettre et leur taille.
    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. comment fonctionner un tableau de socket en java
    Par samsoum2 dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 19/05/2014, 13h13
  2. Comparaison tableau Excel et classe java avec Objets
    Par cisco.nat dans le forum Collection et Stream
    Réponses: 17
    Dernier message: 19/06/2013, 15h45
  3. Réponses: 1
    Dernier message: 25/08/2010, 10h50
  4. Comment créer et parcourir un tableau à deux dimensions en java SE
    Par Invité dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 25/02/2009, 11h07
  5. tableau d'objets en java
    Par lion000 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 26/04/2007, 08h21

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