Frieso
Lt. Commander
- Registriert
- März 2009
- Beiträge
- 1.485
Hi,
Ich bin grade dabei für die schule ein Demoprogramm zu schreiben, das Einen String nach dem huffmanalgorithmus codiert.
Nun habe ich allerdings ein problem und habe absolut keine idee, was das problem ist.
Ausgagspunkt (soweit funktioniert das Programm auch sicher!):
Ich habe eine Liste aus elementen, welche jeweils ein Zeichen (Char) und die jeweilige Anzahl(Integer) enthalten.
Diese habe ich auch einem String erzeugt. Das funktioniert auch alles so weit.
Jetzt möchte ich diese Liste Aufsteigend Sortieren. Dazu habe ich mich für InsertionSort Entschieden und das auch implementiert...Hier ist jetzt das Problem: Wenn der String Leerzeichen enthält (und einige andere fälle, ich bin mir noch nicht ganz sicher) hängt das programm sich auf und ich muss es beenden. Ohne Leerzeichen funktioniert alles ohne probleme genau wie ich es will.
Hier ist der Code des Sortieralgorithmus:
Charlist ist die liste aus den Elementen (Char und Anzahl)
getObject hold das aktuelle objekt aus der Liste, getFrequency liefert mit die Anzahl (tCharCounter heißt die klasse womit ich die einzelnen Zeichen+Anzahl Speicher)
insert Fügt ein objekt vor dem aktuellen ein
append hängt eins ans ende der Liste
Fals ich noch infos braucht einfach fragen, ich bin mir nicht sicher ob man mein problem so versteht
Vielen dank schonmal
Frieso
Ich bin grade dabei für die schule ein Demoprogramm zu schreiben, das Einen String nach dem huffmanalgorithmus codiert.
Nun habe ich allerdings ein problem und habe absolut keine idee, was das problem ist.
Ausgagspunkt (soweit funktioniert das Programm auch sicher!):
Ich habe eine Liste aus elementen, welche jeweils ein Zeichen (Char) und die jeweilige Anzahl(Integer) enthalten.
Diese habe ich auch einem String erzeugt. Das funktioniert auch alles so weit.
Jetzt möchte ich diese Liste Aufsteigend Sortieren. Dazu habe ich mich für InsertionSort Entschieden und das auch implementiert...Hier ist jetzt das Problem: Wenn der String Leerzeichen enthält (und einige andere fälle, ich bin mir noch nicht ganz sicher) hängt das programm sich auf und ich muss es beenden. Ohne Leerzeichen funktioniert alles ohne probleme genau wie ich es will.
Hier ist der Code des Sortieralgorithmus:
Charlist ist die liste aus den Elementen (Char und Anzahl)
getObject hold das aktuelle objekt aus der Liste, getFrequency liefert mit die Anzahl (tCharCounter heißt die klasse womit ich die einzelnen Zeichen+Anzahl Speicher)
insert Fügt ein objekt vor dem aktuellen ein
append hängt eins ans ende der Liste
Code:
procedure tHuffmanCoder.CharListSort;
var helplist: tList;
begin
helplist:=tList.create;
while not Charlist.isEmpty do
begin
CharList.toFirst;
helplist.toFirst;
while (helplist.hasAccess) AND (tCharCounter(helplist.getObject).GetFrequency<tCharCounter(CharList.getObject).GetFrequency)
do helplist.next;
if helplist.hasAccess
then helplist.insert(CharList.GetObject)
else helplist.append(CharList.getObject);
CharList.remove;
end;
CharList.concat(helplist);
CharList.toFirst;
helplist.destroy;
end;
Fals ich noch infos braucht einfach fragen, ich bin mir nicht sicher ob man mein problem so versteht

Vielen dank schonmal
Frieso
