Hallo Community,
ich habe ein kleines Problem. Ich bin gerade dabei ein Programm zu schreiben was mir von zwei Codewörtern die Hamming-Distanz berechnet. Das klappt auch soweit ganz gut. Ich möchte alles dings gerne die Modulo 2 Additions der beiden Codewörter gerne ausgeben. Ich bekomme das ganze auch schon wunderbar in ein neues Char-Array gepackt. Nur bei der Ausgabe haperts.
Ich habe den betroffenen Code mal auskommentiert. Das Problemm ist das ich das komplette array einzeln durlaufen muss um Zeichen für zeichen auszugeben.
Das krieg ich so hin.
Geht das nicht auch einfacher? Über Puts(v) ? Ich bekomme jedenfalls wenn ich es darüber versuche nicht meinen XOR Wert der beiden Codewörtern. Ebenso über Printf komme ich nicht zum ergebniss.
Kann mit bitte jemand auf die Sprünge helfen.
ich habe ein kleines Problem. Ich bin gerade dabei ein Programm zu schreiben was mir von zwei Codewörtern die Hamming-Distanz berechnet. Das klappt auch soweit ganz gut. Ich möchte alles dings gerne die Modulo 2 Additions der beiden Codewörter gerne ausgeben. Ich bekomme das ganze auch schon wunderbar in ein neues Char-Array gepackt. Nur bei der Ausgabe haperts.
Ich habe den betroffenen Code mal auskommentiert. Das Problemm ist das ich das komplette array einzeln durlaufen muss um Zeichen für zeichen auszugeben.
Das krieg ich so hin.
Geht das nicht auch einfacher? Über Puts(v) ? Ich bekomme jedenfalls wenn ich es darüber versuche nicht meinen XOR Wert der beiden Codewörtern. Ebenso über Printf komme ich nicht zum ergebniss.
Kann mit bitte jemand auf die Sprünge helfen.
Code:
#include <stdio.h> #include <conio.h> char HammingDistance(char Code[],char Code2[]) { int array_groese,Hamming; char i; char v[80]={' '}; array_groese =0; Hamming =0; while (Code[array_groese]!='\0'){array_groese++;}//Größe des String-Arrays bestimmen for (i=0;i<=array_groese-1;i++) { if ((Code[i]^Code2[i])==1){Hamming=Hamming+1;} //v[i] = (Code[i]^Code2[i]);//<<----- Wie kann ich diesen String ausgeben? } /*for (i=0;i<=array_groese-1;i++) { printf("%d",v[i]); }*/ return(Hamming); } //-------------------------------------------------------------------------------------------------------- int IstZiffer(char Eingabe[]) //Function die einen String auf 0 oder 1 durchsucht, werden andere Ziffern gefunden gibt sie 0 zurück { int i,array_groese; array_groese =0; //Initialisiert array_groeße while (Eingabe[array_groese]!='\0'){array_groese++;} //Ermitteln der Array-Größe for (i=0;i<=array_groese-1;i++)//Jedes Einzelne Zeichen im String überprüfen { if (Eingabe[i] >='0' && Eingabe[i] <= '1'){}//Wird ein Wert gefunden der 0 oder 1 ist mach nichts. else {return(0);}//Wird ein Wert gefunden der nicht 0 oder 1 ist liefere eine 0 zurück } return(1); //Funktion ist korrekt durchgefallen nur Zahlen vom Typ 0 oder 1 enthalten, Funktion gibt den Wert 1 zurück } //-------------------------------------------------------------------------------------------------------- void main() { char Code2[80]; char Code1[80]; int i; i=0; printf("Bitte geben Sie Codewort 1 ein: "); gets(Code1); printf("Bitte geben Sie Codewort 2 ein: "); gets(Code2); if((IstZiffer(Code1)&&IstZiffer(Code2))==1) {printf("Die Hamming-Distance betraegt HD:%d\n",HammingDistance(Code1,Code2));} else {printf("Sie haben einen Falschen Binaer-Code eingegeben\n");} }
Comment