Praktikum7

Benutzeravatar
R|ng0
Mausschubser
Mausschubser
Beiträge: 71
Registriert: 24. Dez 2006 19:17

Beitrag von R|ng0 »

banshee hat geschrieben:[...]
also ich mache halt einfach reader.getCodeTable(), dann erstelle ich meinen baum und dann mache ich mit reader.readBit() weiter und folge dann dem baum. und da ich bis dahin ja nix überlesen habe, müsste die ausgabe doch zumindest bis zu der stelle stimmen, an der ich was überlese.
Stimmt so weit, vorrausgesetzt dein Baum ist richtig aufgebaut.
Mit dem Bit lesen und Baum durchgehen musst du wirklich vorsichtig sein;
du musst so zu sagen in "Kanten denken".

Ich hatte auch nur Murks raus bekommen, da ich ein paar Zeilen zu früh readBit() aufgerufen habe und in meinem Baum jedes mal ein Bit untergegangen ist.
Denk daran, dass du immer einen Knoten mehr als Kanten, auf deinem Weg zu den Blättern, hast.

banshee hat geschrieben:die beiden char(0)'s werden ja von getCode Table mitgelesen nehme ich an.
hää welche "beiden"??
Du hast an table[0] den Code für für dein EoF-Zeichen.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

hm, das sollte eigentlich stimmen. zum einen hab ichs schon per debugger geprüft und zum andern hab ich symbole von innenknoten auf -1 gesetzt, also das sollte ich dann auch merken. naja ma sehn
banshee hat geschrieben:hää welche "beiden"??
Du hast an table[0] den Code für für dein EoF-Zeichen.
na in der aufgabenstellung steht doch, dass nach dem codetable noch 2 char(0)'s kommen

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Ja, die werden von getCodeTable schon entfernt, um die musst du dir keine weiteren Gedanken machen.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

also ich hab mir jetzt den codetable ausgeben lassen und per debugger verfolgt, was er ausgibt und ich hab keinen fehler entdecken können. also entweder seh ich den wald vor lauter bäumen nicht oder ich hab ne andere message.huffman ^^

was soll das erste wort denn heißen? congratulations oder sowas?

Benutzeravatar
Gnomix
Computerversteher
Computerversteher
Beiträge: 306
Registriert: 31. Okt 2005 08:44

Beitrag von Gnomix »

@banshee:
Der Text, soll folgendermaßen aussehen:

Code: Alles auswählen

Congratulations!

You have successfully uncompressed this file with your solution!


                          oooo$$$$$$$$$$$$oooo
                      oo$$$$$$$$$$$$$$$$$$$$$$$$o
                   oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o
                 o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o
               o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o
              o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o
             $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$
            $$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$
           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
          o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o
          $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$
          $$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$
           $$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$
            $$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$
            "$$$o     """$$$$$$$$$$$$$$$$$$"$$"         $$$
              $$$o          "$$""$$$$$$""""           o$$$
               $$$$o                                o$$$"
                "$$$$o                            o$$$$
                  "$$$$$oo                     o$$$$""
                     ""$$$$$oooo           o$$$$"""
                        ""$$$$$$$oo $$$$$$$$$$
                                """"$$$""""
Im CodeTable steht drin, wie die Zeichen kodiert sind.
Daraus solltest du dir einen Huffmanbaum bauen, und dann den Rest der Datei Bitweise durchgehen und den Huffmanbaum durchlaufen.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

danke, jetz hab ich die stelle endlich gefunden, an der ich dieses verdammte bit überlese :)

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

wie macht man das eigentlich bei einer leeren datei? dann hat man ja nur das EOF zeichen, also nur ein blatt, also kann man keine 2 blätter gruppieren und auch keinen code erzeugen...

Benutzeravatar
Ottifanti
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 113
Registriert: 22. Nov 2005 15:49

Beitrag von Ottifanti »

Testsuite: TestDecoding
Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.041 sec

Testcase: testSimple took 0.011 sec
Testcase: testMax took 0.003 sec
Aber jetzt der Witz: uncompress war gar nicht implementiert!!!

Ich wage mal zu behaupten, dass ich einen Rekord für testMax aufgestellt habe :-)
Mostly harmless

murri
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 196
Registriert: 20. Nov 2005 21:18

Beitrag von murri »

Ja haste bestanden???

Also ich muss sagen, dieses Praktikum war echt nicht schwer. Das einzige war halt erstmal auf den richtigen Trichter zu kommen. Da kritisiere ich aber ein wenig die etwas sehr dünne Aufgabenstellung.

Benutzeravatar
Gnomix
Computerversteher
Computerversteher
Beiträge: 306
Registriert: 31. Okt 2005 08:44

Beitrag von Gnomix »

banshee hat geschrieben:wie macht man das eigentlich bei einer leeren datei? dann hat man ja nur das EOF zeichen, also nur ein blatt, also kann man keine 2 blätter gruppieren und auch keinen code erzeugen...
@banshee: Die kodierte Datei sieht dann so aus, dass du die Codetabelle hast, dann die beiden Trennzeichen, dann den Bitstring fuer EOF, und zuletzt, das Endzeichen.
Bei der Auswertung sollte dann natuerlich wieder eine leere Datei rauskommen.
Du solltest nie in den rechten Teil kommen können, wenn du es richtig implementiert hast.

MaKo
Neuling
Neuling
Beiträge: 4
Registriert: 29. Okt 2005 00:44
Wohnort: Michelstadt

Beitrag von MaKo »

Das Endzeichen soll nochmal extra rein? Ich dachte, das kommt einfach nur in die komprimierten Daten rein. Also einfach noch ein 0-Byte am Ende schreiben? Die Aufgabenstellung finde ich da etwas verwirrend.


Ich bekomme bei TestEncoding bei beiden Texten folgenden Fehler:
Caused an ERROR
null
java.lang.NullPointerException
at HuffmanTreeSolutionCorn.buildTree(HuffmanTreeSolutionCorn.java:96)
at HuffmanTreeSolutionCorn.<init>(HuffmanTreeSolutionCorn.java:78)
at TestEncoding.fileTest(TestEncoding.java:22)
at TestEncoding.testFaust(TestEncoding.java:75)

Ich weiß aber nichts damit anzufangen.

Benutzeravatar
corn
Ehemalige Fachschaftler
Beiträge: 28
Registriert: 17. Okt 2004 19:08
Wohnort: Groß-Umstadt
Kontaktdaten:

Beitrag von corn »

gibst du deine CodeTable auch korrekt zurueck?

MaKo
Neuling
Neuling
Beiträge: 4
Registriert: 29. Okt 2005 00:44
Wohnort: Michelstadt

Beitrag von MaKo »

Ja, ich meine schon. In meinen eigenen Tests rufe ich erst compress(Dateiname, Dateiname) auf, dann getCodeTable() und dann gebe ich diese Tabelle aus.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

kannst du mit deinem code denn die faust message komprimieren und wieder dekomprimieren ohne NullPointerException?

MaKo
Neuling
Neuling
Beiträge: 4
Registriert: 29. Okt 2005 00:44
Wohnort: Michelstadt

Beitrag von MaKo »

Jo, meine Tests klappen alle. Checksumme ist auch dieselbe, wenn ich eine Datei (z.B. den Faust) komprimiere und dann wieder dekomprimiere.

Antworten

Zurück zu „Archiv“