Example #1
0
 public void setFilsDroit(Noeud FilsDroit)
 {
     this.FilsDroit = FilsDroit;
 }
Example #2
0
        public void Parcours(string saisie)
        {
            /*compter le nombre d'occurence*/
            for (i = 0; i < saisie.Length; i++)
            {
                if (!dico.ContainsKey(saisie[i]))
                {
                    dico.Add(saisie[i], 0);
                }
                dico[saisie[i]]++;
            }
            /*fonction de tri */
            var tri = from pair in dico orderby pair.Value descending select pair;

            foreach (KeyValuePair <char, int> pair in tri)
            {
                Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
            }
            //Compression de ma chaine de caractère
            Noeud Arbre      = new Noeud();
            Noeud NoeudActif = Arbre;

            foreach (KeyValuePair <char, int> clef in tri)
            {
                char Caractere = clef.Key;
                //Création d'un fils gauche et d'un fils droit
                Noeud FilsGauche = new Noeud();
                Noeud FilsDroit  = new Noeud();
                FilsGauche.setMot(Caractere);
                NoeudActif.setFilsGauche(FilsGauche);
                NoeudActif.setFilsDroit(FilsDroit);
                NoeudActif = FilsDroit;
            }

            string MotEncoder = null;

            for (i = 0; i < saisie.Length; i++)//Parcours de ma chaine de caractere
            {
                char caractereMot = saisie[i];
                if (i != 0)
                {
                    MotEncoder = MotEncoder + Arbre.encode(caractereMot);
                }
                else
                {
                    MotEncoder = Arbre.encode(caractereMot);
                }
            }
            Console.WriteLine("Vous avez saisie: " + saisie + ". Voici la chaine compressée : " + MotEncoder);

            //Décompression de ma chaine binaire
            String MotDecoder  = null;
            Noeud  NoeudActif2 = Arbre;

            for (i = 0; i < MotEncoder.Length; i++) //Parcours de ma chaine binaire
            {
                Char caractereMot = MotEncoder[i];

                if (caractereMot == '1')
                {
                    NoeudActif2 = NoeudActif2.getFilsDroit();
                }
                else
                {
                    NoeudActif2 = NoeudActif2.getFilsGauche();
                    string conversion = Convert.ToString(NoeudActif2.getMot());
                    MotDecoder  = MotDecoder + conversion;
                    NoeudActif2 = Arbre;
                }
            }
            Console.WriteLine("Voici la chaine décompressée: " + MotDecoder);
        }
Example #3
0
 public void setFilsGauche(Noeud FilsGauche)
 {
     this.FilsGauche = FilsGauche;
 }