Bonjour désolé de vous déranger mais j'ai besoin d'aide pour un devoir à rendre mercredi prochain qui concerne le codage et decodage d'huffman Le code est en java
Code :
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList; // Cliquez pour découvrir
import java.util.Collections;
import java.util.HashMap;
class Node implements Comparable<Node> {
char symbol;
double freq;
Node left, right;
public Node(char s, double f) {
this.symbol = s;
this.freq = f;
this.left = this.right = null;
}
public Node(Node left, Node right) {
this.symbol = (char) 0;
this.left = left;
this.right = right;
this.freq = left.freq + right.freq;
}
publicint compareTo(Node other) {
returnthis.freq < other.freq ? -1 : 1;
}
}
publicclass Huffman {
/*
* public static String encode(String filename) throws FileNotFoundException
* { FileReader infile = new FileReader(filename); String ret =
* encode(infile);
*
* try { infile.close(); } catch (IOException ioex) { } // Nothing we can do
* if it won't close.
*
* return ret; }
*
* public static String encode(InputStream in) { return encode(new
* InputStreamReader(in)); }
*
* public static String encode(Reader in) {
*
* // You can't reset() a file stream, so store in a String. StringWriter
* streamcopy = new StringWriter(); try { for (int nextchar = in.read();
System.out.println((char) (i + 'a') + ": " + codes[i]);
//al.add(codes[i]);
}
sortie = new BufferedOutputStream(new FileOutputStream(new File(
"c:\\textes\\codage.txt" )), 10240); // créer le fichier
byte[] tampon = new byte[10240]; // 10ko
int longueur;
while ((longueur = entree.read(tampon)) > 0) {
sortie.write(tampon, 0, longueur);
}
} finally {
sortie.close();
entree.close();
}
}
}
Donc voila j'ai réussis à faire l'arbre etc , on doit assigné aux caractères des fréquences prédéfinis Je voudrais maintenant passé au codage des lettres , mon arbre donne donc ça : a: 11011 b: 0110 c: 00000 d: 11110 e: 11010 f: 10010 g: 101100 h: 0011 i: 11111 j: 010000 k: 111010 l: 111011 m: 0101 n: 1100 o: 010001 p: 101101 q: 0010 r: 01001 s: 1010 t: 00001 u: 1000 v: 10111 w: 0111 x: 10011 y: 0001 z: 11100
Mais je vois pas du tout comment je peux faire pour ecrire un texte : abcjfejrejfjdj par exemple et que ceci affiche le texte en bit 010101010 en fonction des lettres Bon c'est un peu codé comme un cochon par contre désolé de pas avoir supprimer les trucs inutile. Merci d'avance si on peut m'apporter des précisions
Marsh Posté le 28-02-2013 à 10:05:19
Bonjour désolé de vous déranger mais j'ai besoin d'aide pour un devoir à rendre mercredi prochain qui concerne le codage et decodage d'huffman
Le code est en java
Donc voila j'ai réussis à faire l'arbre etc , on doit assigné aux caractères des fréquences prédéfinis
Je voudrais maintenant passé au codage des lettres , mon arbre donne donc ça :
a: 11011
b: 0110
c: 00000
d: 11110
e: 11010
f: 10010
g: 101100
h: 0011
i: 11111
j: 010000
k: 111010
l: 111011
m: 0101
n: 1100
o: 010001
p: 101101
q: 0010
r: 01001
s: 1010
t: 00001
u: 1000
v: 10111
w: 0111
x: 10011
y: 0001
z: 11100
Mais je vois pas du tout comment je peux faire pour ecrire un texte : abcjfejrejfjdj par exemple et que ceci affiche le texte en bit 010101010 en fonction des lettres
Bon c'est un peu codé comme un cochon par contre désolé de pas avoir supprimer les trucs inutile.
Merci d'avance si on peut m'apporter des précisions
Message édité par walase le 28-02-2013 à 10:06:51