Hallo,
ich möchte ein C# Programm schreiben das einen text mittels Run Length Verfahren codiert.
In der Theorie würde das so aussehen
Ausgangstext: aaaaabcuuUUlDg
Codierter Text: #5abc2u2UlDg
Also der wenn ein Buchstabe öfter hintereinander vorkommt wird die Zahl, wie oft er vorkommt davor geschrieben, und wenn die Zahl höher als 3 ist wird noch ein Trennzeichen vor der Zahl hingeschrieben (#).
Das ist mein Code zurzeit geht bei meiner Codierung noch der letzte Buchstabe verloren.
Ich hoffe ihr könnt mir helfen
mfg
Madagaska
ich möchte ein C# Programm schreiben das einen text mittels Run Length Verfahren codiert.
In der Theorie würde das so aussehen
Ausgangstext: aaaaabcuuUUlDg
Codierter Text: #5abc2u2UlDg
Also der wenn ein Buchstabe öfter hintereinander vorkommt wird die Zahl, wie oft er vorkommt davor geschrieben, und wenn die Zahl höher als 3 ist wird noch ein Trennzeichen vor der Zahl hingeschrieben (#).
Code:
string kontrollzeichen = "#";
///char buchstabe;///stellt die Zeichen in "string text" dar
string text = "aaaaabcuuUUlDg"
int zähler = 1;
Console.WriteLine("ENCODING");
Console.WriteLine("Ausgangs Text: {0}", text);
Console.Write("Codierter Text: ");
using (StreamWriter sw = new StreamWriter(Pfad_Codiert, false))///false = text wird jedes mal überschrieben
{
for (int i = 0; i < text.Length -1; i++)
{
text = text[i];
if (text[i + 1] == text)///Ist Wert i und i+1 gleich, wird der Zähler erhöht
{
zähler++;
}
else if (zähler == 1)///Steht der Buchstabe allein, Buchstabe einmal ausgeben
{
sw.Write(text);
Console.Write(text);
}
else if (zähler <= 3)///Kommt der Buchstabe 2 bis 3 mal vor, wird der Zähler + Buchstabe ausgegeben
{
sw.Write(zähler);
sw.Write(text);
Console.Write(zähler);
Console.Write(text);
zähler = 1;
}
else if (zähler > 3)///Kommt der Buchstabe öfter als 3 vor, wird das Kontrollzechen + Zähler + Buchstabe ausgegeben
{
sw.Write(kontrollzeichen);
sw.Write(zähler);
sw.Write(text);
Console.Write(kontrollzeichen);
Console.Write(zähler);
Console.Write(text);
zähler = 1;
}
}
}
Das ist mein Code zurzeit geht bei meiner Codierung noch der letzte Buchstabe verloren.
Ich hoffe ihr könnt mir helfen
mfg
Madagaska