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 :

trouve pas comment faire un algo pour mon programme


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut trouve pas comment faire un algo pour mon programme
    slt !!!

    voila je tombe sur un ik ........

    je dois analyser des chaine de caractéres comme suit .........

    on tape le nom ensuite le ou les prenoms le programme doit compter le nombres de lettres qui ya dans le nom et les ou le prenom je m'explique :

    String nom=azer;
    String prenom=reza;
    String prenom2=BeauGosse;
    String chaine = nom + prenom + prenom2; //donc chaine = azerrezabeaugosse

    dans ma chaine de charactére chaine :

    j'ai 3 a
    j'ai 2 Z
    j'ai 0 h
    j'ai 1 b

    ainssi de suite il dois scanner tout l'alphabet et même si ya zero comme le H ou autre il doit renvoyer zero car tout sera lisible ensuite il additionne les résultats optenu pour chaque grille ...

    A3 ..................... B1 ...................... C0 ......... C=0
    J0 .... 5 .............. K0 .... 1 .............. L0 ... 1 .... L=0 .... 0+0+1 = 1
    S2 ..................... T0 ...................... U1 .......... U=1

    D0 ..................... E4 ....................... F0
    M0 .... 0 ............. N0 .... 4 .............. O1 .... 1 <--- ceux-ci est une grille
    V0 ..................... W0 ...................... X0

    G1 ..................... H0 ....................... I0
    P0 .... 1 ............. Q0 .... 2 ............... R2 .... 2
    Y0 ...................... Z2




    je trouve pas de truc pour l'alphabet dois-je initialiser un tableaux avec tout l'alphabet dedans ou ya plus rapide car sur le net j'ai pas trouvé d'algo similaire ....... ..... je suis en stage en entreprise nouveaux dans le monde de la programmation et je dois faire un soft en java sur la numérologie voila ...... merci de votre aide .........

    ps : message edité
    ps2 : message reédité

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    va falloir que tu sois plus clair parce que je pense que pas grand monde ne saisisse vraiment ce que tu veux faire ...

    en gros :
    tu as une liste de String
    tu veux compter combien d'occurence de chaque lettre il y a pour toutes ces chaines.
    est ce que si tu concatène tous tes mots et que tu compte le nombre de chaque de lettre ça te donne le résultat que tu souhaite ?

    en fait c'est cette phrase qui est embrouillante :
    Citation Envoyé par unknoweb
    il additionne les résultats optenu pour chaque grille et la grille et exactement la même que celle du graph .....
    c'est quoi une grille ? c'est quoi le graph ?
    C'est une manière de cumuler tout tes résultats ? si oui, une solution simple (mais pas forcément la meilleure) consisterai par exemple à regrouper toutes tes chaines en une seule et de réaliser le comptage dessus.

    après, pour compter, tu peux par exemple (enfin c'est ça que tu essaies de faire ?) utiliser un tableau d'entier de 26 cases et incrémenter les valeurs des cases suivant ce que tu lis ? Tu peux aussi imaginer une solution à base de hashmap ...

    Bref, quelques explications seraient les bienvenues ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    reslt !!!!

    désolé pour les explications j'ai édité le poste .......

  4. #4
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Regarde du côté des Hashtables
    http://javasearch.developpez.com/j2s...Hashtable.html
    et prend comme clées les lettres de l'alphabet.
    Pour la suite, ton explication n'est effectivement pas très claire et je n'ai malheureusement pas de boule de cristal.

    je dois faire un soft en java sur la numérologie
    Je savais que Mme Irma lisait dans le marc de café...mais de là à se mettre à Java!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    slt !!

    merci de ta réponse mais je dois pas utiliser des methode spécifique à java lui même car le code sera reécrit en ActionScripte 3 donc voila ......... on m'a demander de le faire en java car c'est similaire .......... je sais c'est bizarre mais c'est comme ça c'est pas moi qui décide .......... si je peux faire autrement que ton hashtable ça serais cool ...... et si j'initialisé un tableaux ou je repertori tout l'alphabet ensuite avec une boucle il vérifie la chaine et le tableaux tout en comptant lettre par lettre c'est faisable ???

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    bon ben désolé, je capte toujours pas ...

    en tous cas pour compter tes lettres :
    soit un tableau de 26 case soit une hashmap (avec la méthode add de rédinie pour incrémenter la valeur)

    après tu traites tes chaines soit une par une soit tu concatène tout et tu fais le traitement dessus.

    C'est une fois que tu as compté tes lettres que c'est pas clair ...

    [EDIT] en ce qui concerne ma solution avec un tableau de 26 cases. Il faudrait voir si à partir de la valeur du caractère on ne peut pas directement trouver la place qu'il occupe dans le tableau.
    après avec les String tu peux faire pas mal de choses.
    si par exemple tu concatènes toutes tes chaines en une seule.
    tu appelle toCharArray() qui te renvoies un tableau de caractères que tu peux parcourir. Tu peux également trier ce tableau dans l'ordre alphabétique aussi.
    ...

  7. #7
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    -> Tu ferais sans doute mieux de programmer directement dans le langage cible. Tu gagneras du temps au final et surtout ça t'éviteras les mauvaises surprises.
    Si tu veux faire de l'ActionScript va plutôt là:
    http://www.developpez.net/forums/forumdisplay.php?f=84

    ->Je ne comprend toujours pas ce que tu veux faire!
    Est-ce que tu veux cumuler toutes tes stats où avoir une analyse de fréquence pour chaque enregistrement?

  8. #8
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Points : 151
    Points
    151
    Par défaut
    Je comprend pas trop ce que tu dois faire :p desolé...
    Et s'est où que tu bloque exactement???

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    reslt !!!!!

    on va faire plus simple je peux pas me mettre a l'actionscripte car j'ai suivit une formation afpa de 11 mois et pas d'actionscripte mais pas grave .......

    je voudrais juste savoir comment m'y prendre pour analyser une chaine de charactére et savoir combien ya-t-il de A de B de C etc jusqu'a Z ....

    exemple:

    String nom = azer;
    String prenom = reza;
    String chaine = azer + reza; .......... donc chaine vaut la concaténation de nom et de prenom donc azerreza

    il faudrais comparer la variable String chaine avec tout l'alphabet et savoir combien ya de A de B de C etc ......

    je pensé utiliser le split pour la chaine et ensuite utiliser la fonction switch avec les case .........

    si vous pouvez m'orienter ou m'ouvrire les yeux avec un bout de code ça serais cool car tjs pas trouver ..........

  10. #10
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ben je t'ai déjà donné une soluce ... je répète :

    transforme ta chaine concaténée en tableau de char (toCharArray())
    parcours ce tableau
    pour chaque lettre tu incrémente le nombre de fois où elle apparait. Pour ce faire, 2 possibilités (entre autres) -> une hashmap ou un tableau.

    dans le cas du tableau, un char peut correspondre à une valeur numérique avec laquelle (peut etre) tu pourrais determiner l'indice de cette lettre dans le tableau.

    dans le cas de la hasmap<String, Integer>, si la clé (lettre) n'existe pas, tu l'ajoutes, si elle existe tu incrémentes la valeur associée.

  11. #11
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Comme il a été dit, tu peux appeller toCharArray() qui te renvoies un tableau de caractères que tu peux parcourir et ensuite pour chaque caractère du tableau tu incrémente un int dans un tableau d'int à 26 cases initialisé avec 26 zeros...

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    ok merci de vos réponse je vais voir de suite ..........

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    slt !!!!

    donc voila j'ai pas réussit a utiliser ce que vous m'avez dis mais j'ai fais ceux-ci :

    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
    public class Name {
     
    	public static void main(String[] args) {
     
    	String prenom = "catherine";
    	String prenom2 = "caffin";
    	String chaine = prenom + prenom2;
     
    	int compt = 0;
    	int deb = chaine.indexOf('e');
    	while (deb != -1){
    		compt++;
    		deb = chaine.indexOf('e', ++deb);
    	}
    	System.out.print("le nombre de e est : " + compt);
     
    	}
    }
    le code marche mais le ik c'est que je n'arrive pas a utiliser cette méthode pour tout l'alphabet si vous savez comment faire merci de vos réponse ............ pas réussit avec toCharArray()

  14. #14
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    -créé un tableau de 26 char contenant les lettres de l'alphabet: alphabet
    -créé un tableau de 26 int contenant la fréquence d'apparition de chaque lettre: frequence
    -pour chaque char de "alphabet" compte le nombre de lettre de ta chaine (comme tu l'as fait dans ton programme) et stocke le résultat dans "frequence".

    Je te conseille de faire dans une méthode qui prend en entrée ta chaine à analyser et retourne sous forme de tableau d'int l'analyse de fréquence.

    De manière générale, lorsque tu as un problème à résoudre, commence par trouver un algorithme. Tu peux même laisser l'algo en français en commentaire dans ton code, c'est toujours plus clair.

    Pour te former plus vite regarde ces tutoriels Java : http://java.developpez.com/cours/

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    slt !!!!

    oki merci vais tester

  16. #16
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    juste comme ça ...

    un seul tableau est suffisant. L'indice représente la lettre et le contenu représente le nombre d'occurrence.

    a mon avis au lieu de parcourir 26 fois ta chaine, il vaut mieux ne la parcourir qu'une seule fois. a chaque lettre tu incrémentes la valeur au bon indice dans le tableau ... genre

    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
    main {
    String aTraiter = "blabla"
    int[] nbOccurrences = new int[26];
    char[] lettres = aTraiter.toCharArray();
     
    for (int i = 0; i<lettres.length; i++)
          nbOccurrences[ getIndice(lettres[i]) ] ++;
    }
    }
     
    /**
     * une super fonction qui te renvoie l'indice du tableau qui correspond à la lettre
     */
    int getIndice(char c){
     
        // par contre c'est là qu'il faut trouver une solution propre
        // je mets ça complètement au pif
        return Character.getNumericValue(c);
    }
    apres c'est juste pour une histoire d'optimisation de code ...

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    slt !!!!

    merci j'étais en train de trouver comment utiliser le charArray donc vais voir avec ton code ...........

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    slt !!!!

    franchement j'avance pas du tout je suis à la rue .............

    si quelqu'un pouvait me donner un algo avec des System.out.print au lieux des return ça serais cool car j'arrive pas à avoir le code dans ma tête merci de votre compréhention ..............

  19. #19
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ben le code que je t'ai mis c'est au pif ... c'est à toi de trouver en gros.

    sinon utilises la méthode de JMLLB.

    tu as 2 tableaux, 1 de lettres, 1 de fréquence

    pour chaque lettre du tableau (de l'alphabet)
    tu utilise ta méthode de calcul (
    int deb = chaine.indexOf(lettres[i]);
    while (deb != -1){ ...
    ) pour trouver le nombre d'occurrences
    tu ajoutes cette valeur au tableau des fréquence (à l'index i à priori)


    et hop c'est fini ...
    je vois pas ce qu'on peut faire de plus.
    On te proose 2 solutions qui doivent marcher. apres à toi de les améliorer comme tu le sens. En tous cas t'as les clés en main pour faire marcher ton truc.

    quant à remplacer les return par des System.out.println ... tu peux le faire seul je pense ...

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    slt !!!!

    c'est ok j'ai trouvé et ça fonctionne merci à vous ..........



    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
    public class Name {
     
         public static void main(String[] args) {
     
    		// Initialisation de tableaux et de variables	
    		char alphabet[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    		//int frequence[] = new int[26];
    		String prenom = "catherine";
    		String prenom2 = "madeleine";
    		String prenom3 = "giselle";
    		String nom = "caffin";
    		String chaine = prenom + prenom2 + prenom3 + nom;
     
    		// compter le nombre de lettre dans la chaine
    		int compt2 = chaine.split("").length;
    		System.out.println("le nombre de lettre est de : " + compt2);
     
    		//compter le nombre d'occurence de chaque lettre de l'alphabet
    		for (int i=0;i<alphabet.length;i++)
    		{
    		int compt = 0;
    		int deb = chaine.indexOf(alphabet[i]);
     
    		while (deb != -1){
    			compt++;
    			deb = chaine.indexOf(alphabet[i], ++deb);
    		}
    		System.out.print(" le nombre de " + alphabet[i] + " est : " + compt + " Fois \r" );
    		}
    }
    }

    voila je poste le code au cas ou quelqu'un en aurais besoin ...........

Discussions similaires

  1. Je ne trouve pas ou est l'erreur dans mon programme
    Par stich51 dans le forum Général Python
    Réponses: 3
    Dernier message: 02/05/2014, 16h36
  2. pb dans mon script, je sais pas comment faire
    Par gengiskhan72 dans le forum C
    Réponses: 5
    Dernier message: 30/06/2009, 20h16
  3. [MySQL] Php, je ne comprends pas comment faire pour introduire des données dans une table
    Par Liondd dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 14/12/2006, 12h53
  4. Mon Delete ne marche pas!Comment faire?
    Par ghan77 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/01/2006, 16h45

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