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

C# Discussion :

décortiquer en syllabes


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut décortiquer en syllabes
    Bonjour,

    J'ai 2 fichier XML,

    le premier contient ce type de lignes :
    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
     
    <root>
    <name id="0">Aaron</name>
    <name id="1">Adam</name>
    <name id="2">Adrian</name>
    <name id="3">Alan</name>
    <name id="4">Alejandro</name>
    <name id="5">Alex</name>
    <name id="6">Allen</name>
    <name id="7">Andrew</name>
    <name id="8">Andy</name>
    <name id="9">Anthony</name>
    <name id="10">Art</name>
    <name id="11">Arthur</name>
    <name id="12">Barry</name>
    <name id="13">Bart</name>
    <name id="14">Ben</name>
    <name id="15">Benjamin</name>
    <name id="16">Bill</name>
    <name id="17">Bobby</name>
    <name id="18">Brad</name>
    <name id="19">Bradley</name>
    <name id="20">Brendan</name>
    <name id="21">Brett</name>
    <name id="22">Brian</name>
    <name id="23">Bruce</name>
    <name id="24">Bryan</name>
    <name id="25">Carlos</name>
    <name id="26">Chad</name>
    <name id="27">Charles</name>
    <name id="28">Chris</name>
    <name id="29">Christopher</name>
    <name id="30">Chuck</name>
    <name id="31">Clay</name>
    <name id="32">Corey</name>
    <name id="33">Craig</name>
    <name id="34">Dan</name>
    </root>
    et le second ce type de lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <root>
      <vowel type="char" count="0">u</vowel>
      <vowel type="string" count="0">ya</vowel>
     <consonant type="char" count="0">z</consonant>
      <consonant type="string" count="0">ch</consonant>
      <special type="string" count="0">ion</special>
    </root>
    Je cherches à découper les mots du premier fichier un par un en syllabes pour incrémenter le count du fichier où sont stockées les syllabes de la langue (c'est pour une analyse superficielle de syllabes dans les langues).

    Voici ce que j'ai réussit à faire pour le moment
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Xml.Linq;
     
    namespace Random_Name_Generator
    {
        internal class obj_Letters
        {
            public string Letter;
     
            public struct CurrentChar
            {
                public char curentchar;
                public bool isvowel;
            }
     
            public struct CurrentString
            {
                public string String;
                public bool IsWowel;
            }
            public Enum CompChar;
     
            public CurrentChar ObtainSyllabe(obj_word ThisWord)
            {
                Dictionary<int, CurrentChar> Dico = new Dictionary<int, CurrentChar>();
     
                int count = 0;
                foreach(char mychar in ThisWord.word)
                {
                    CurrentChar MycharToDic = new CurrentChar {curentchar = mychar};
                    IEnumerable<XElement> vowels = root.Elements("vowel").Select(el => el);
                    foreach (XElement el in vowels)
                    {
                        MycharToDic.isvowel = mychar == el.Value.ToCharArray().First();
                    }
                    Dico.Add(count,MycharToDic);
                    count++;
                }
                    CurrentString MyCompStr = new CurrentString();
                    Dictionary<int, CurrentString> ForResearch = StandardList(ThisWord);
                    int MaxLenght = ForResearch.Select(kvp => kvp.Value.String.Length).Concat(new[] {0}).Max();
                    for (int j = 0; j < MaxLenght; j++)
                    {
                        List<string> aList = (from kvp2 in ForResearch where kvp2.Value.String.Length == j select kvp2.Value.String).ToList();
                    }
     
     
                return _currentchar;
            }
     
            public Dictionary<int, CurrentString> StandardList(obj_word TheWord)
            {
                Dictionary<int, CurrentString> _StandardList = new Dictionary<int, CurrentString>();
                XElement root = XElement.Load(TheWord.language.f_info.FullName);
                IEnumerable<XElement> vowels = root.Elements("vowel").Select(el => el);
                IEnumerable<XElement> consonants = root.Elements("consonant").Select(el2 => el2);
                int count = 0;
     
                foreach (XElement el in vowels)
                {
                    CurrentString _MyCurrStr = new CurrentString {String = el.Value.Trim(), IsWowel = true};
                    _StandardList.Add(count,_MyCurrStr);
                    count++;
                }
                foreach(XElement el2 in consonants)
                {
                    CurrentString _MyCurrStr2 = new CurrentString {String = el2.Value.Trim(), IsWowel = false};
                    _StandardList.Add(count,_MyCurrStr2);
                    count++;
                }
                return _StandardList;
            }
            }
        }
    }
    Mais là j'avoue que je sèche un peu, je ne sais pas par où je dois continuer pour avancer.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Bonjour,

    J'avoue ne pas avoir trop le courage de décrypter le code vu l'heure, je m'excuse de ma feignantise. Est ce que tu pourrais nous dire ce que tu arrives à faire et les fonctions qui te manquent histoire qu'on te donne des pistes ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Bien sûr,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
                 Dictionary<int, CurrentString> ForResearch = StandardList(ThisWord);
                string dS = ThisWord.word;
                foreach (KeyValuePair<int, CurrentString> kvp2 in ForResearch)
                {
                    if (!dS.Contains(kvp2.Value.String)) continue;
                    //Select the correct XElement here
                    XmlDocument doc = new XmlDocument();
                    if (!kvp2.Value.IsWowel) continue;
                    KeyValuePair<int, CurrentString> kvp3 = kvp2;
                    XElement item = (XElement)root.Descendants("vowel").Where(n => n.Value == kvp3.Value.String);
                    int attrbadd = (int)item.Attribute("counter");
                    item.SetAttributeValue("count", attrbadd + 1);
                }
    voila qui est un début de solution, quelqu'un peut me dire ce que je dois rajouter à la ligne 13 pour que le changement soit répercuté sur le fichier XML s'il vous plait?

    C'est peut-être tout bête mais j'y arrive pas.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    En fait, ce que tu cherches à faire est d'écrire le contenu du XmlDocument que tu as modifié. Tu peux donc appeler la méthode WriteTo() qui prend en paramètre un flux XmlWriter que tu dois auparavant ouvrir sur le fichier que tu veux mettre à jour

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Merci beaucoup !

    Je tag résolu, mais j'updaterai le code quand il sera prêt au cas où quelqu'un cherche à faire ça un jour ^^.

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

Discussions similaires

  1. Compter les syllabes d'un mot français
    Par david_chardonnet dans le forum Langage
    Réponses: 4
    Dernier message: 09/05/2014, 10h57
  2. [barbare] décortiquer un fichier
    Par Ganondorf dans le forum Langage
    Réponses: 2
    Dernier message: 13/10/2007, 22h55
  3. Réponses: 9
    Dernier message: 11/09/2007, 23h47
  4. Décortiquer un unsigned char
    Par xaviooo dans le forum C
    Réponses: 6
    Dernier message: 17/04/2007, 09h03
  5. [Debutant][StringBuffer]Décortiquer
    Par tsyfar dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 01/10/2003, 17h54

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