TE
TE
boss3D
Guest
AW: [C] Hilfe beim Programmieren und Verständnis-Fragen zu Code-Beispielen ...
Mit Zeigern und Adressen kenne ich mich eh aus und was du in der ersten Hälfte deines Postings beschreibst, habe ja ich schon in meinem letzten erkannt und beschrieben. Jetzt sind wir uns auch bei der ratio einig: Die muss ja nur für jeden Schleifendurchlauf mit der Anzahl der Zeichen, die printf ausgibt (ist immer 2 oder 1 --> ok, die 1er Abfrage fehlt im aktuellen Code noch) aufaddiert werden. Am Ende sollte ich dann bei unserem konkreten string 13 in ratio stehen haben. Da kann ich dann den Prozentwert damit berechnen. Aber das hast du ja mittlerweile eh selber erkannt.
Und eine Variable mit vorangestelltem &-Operator im Funktionskopf fällt für uns leider wieder aufgrund der Vorgaben in der Aufgabenstellung weg:
Ich müsste eigentlich im Moment nur eines wissen: Wie genau kann ich nach vollständiger Codierung (oder auch rundenweise, wenn ich auf die Positionen aufpasse) *s (hat ja den Originalstring als Inhalt) in encode_runlength() mit dem codierten string überschreiben?
Ich hätte es mal so probiert, aber dann gibt er nur A4 aus und dann kommt eine Windows-Fehlermeldung:
Von der Reihenfolge her sollten wir jedenfalls keine Probleme bekommen ...
1. *s enthält den Originalstring und ich gebe ihn aus
2. Dann wird der Inhalt von *s in der aufgerufenen Funktion encode_runlength() überschrieben und der neue Inhalt (die Codierung) ausgegeben.
3. Dann greife ich in decode_runlength() auf *s, das ja nun die Codierung als Inhalt hat, zu und bearbeite *s wieder.
4. Anschließend wird die Codierung in decode_runlength() wieder mit dem Originalstring überschrieben und ausgegeben.
Mit Zeigern und Adressen kenne ich mich eh aus und was du in der ersten Hälfte deines Postings beschreibst, habe ja ich schon in meinem letzten erkannt und beschrieben. Jetzt sind wir uns auch bei der ratio einig: Die muss ja nur für jeden Schleifendurchlauf mit der Anzahl der Zeichen, die printf ausgibt (ist immer 2 oder 1 --> ok, die 1er Abfrage fehlt im aktuellen Code noch) aufaddiert werden. Am Ende sollte ich dann bei unserem konkreten string 13 in ratio stehen haben. Da kann ich dann den Prozentwert damit berechnen. Aber das hast du ja mittlerweile eh selber erkannt.
Und eine Variable mit vorangestelltem &-Operator im Funktionskopf fällt für uns leider wieder aufgrund der Vorgaben in der Aufgabenstellung weg:
^^ Und die sieht nun einmal so aus: double encode_runlength(char *s) --> also mit *-Operator.Die Schnittstelle der Funktion muss eingehalten werden.
Ich müsste eigentlich im Moment nur eines wissen: Wie genau kann ich nach vollständiger Codierung (oder auch rundenweise, wenn ich auf die Positionen aufpasse) *s (hat ja den Originalstring als Inhalt) in encode_runlength() mit dem codierten string überschreiben?
Ich hätte es mal so probiert, aber dann gibt er nur A4 aus und dann kommt eine Windows-Fehlermeldung:
Code:
double encode_runlength(char *s) {
int i=0, j=1, count=0, length=checkLength(s);
double ratio=0.0;
while (*(s+i) != '\0') {
if (*(s+i)!=*(s+j)) {
printf("%c%d", *(s+i), (j-count));
count=j;
[COLOR=royalblue][B]*(s+k)=*(s+i); [/B][COLOR=seagreen]/* jeder zweite Index beginnend bei 0 bekommt Buchstaben */[B]
*(s+l)=(j-count); [/B][COLOR=seagreen]/* jeder zweite Index beginnend bei 1 bekommt Zahl */[B]
k+=2;
l+=2;[/B] }
i++;
j++;
}
return ratio;
}
1. *s enthält den Originalstring und ich gebe ihn aus
2. Dann wird der Inhalt von *s in der aufgerufenen Funktion encode_runlength() überschrieben und der neue Inhalt (die Codierung) ausgegeben.
3. Dann greife ich in decode_runlength() auf *s, das ja nun die Codierung als Inhalt hat, zu und bearbeite *s wieder.
4. Anschließend wird die Codierung in decode_runlength() wieder mit dem Originalstring überschrieben und ausgegeben.
Zuletzt bearbeitet: