Announcement

Collapse
No announcement yet.

Erhalten von führender 0

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Erhalten von führender 0

    Hallo Community,
    ich habe ein kleines Problem.

    Ich soll ein Programm schreiben, das von einer beliebigen Anzahl von Codewörtern die Hamming Distance ermittelt.

    Das ganze habe ich bisher so realisiert:
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define BUF 255
    
    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;}}
    	printf("Haben die Hamming Distance : %d\n",Hamming);
    	printf("\n");
    	
    	return(Hamming);
    }
    
    void Sort(int value[],int CodewörterAnzahl)
    {
       int i,j;
       char buf[BUF];
       char buf2[BUF];
       
       //Vergleicht alle Codewörter mit einander
       for(i=0;i<=CodewörterAnzahl-1;i++)
       {
    	   for(j=(i+1);j<=CodewörterAnzahl-1;j++)
    	   {
    		   itoa(value[i], buf, 10);
    		   itoa(value[j], buf, 10);
    		   printf("Codewort %d & Codewort %d\n",value[i],value[j]);
    		   HammingDistance(itoa(value[i], buf, 10),itoa(value[j], buf2, 10));
    	   }
       }
    }
    
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main(void) {
       int *value;
       int size, i = 0;
       printf("Wie viele Werte benötigen Sie : ");
       scanf("%d", &size);
       value = (int *)malloc(size*sizeof(int));
       if( NULL == value ) {
          printf("Fehler bei malloc....\n");
          return EXIT_FAILURE;
       }
       while( i < size ) {
          printf("Wert für value[%d] eingeben : ", i);
          scanf("%d", &value[i]);
          i++;
       }
       printf("Hier Ihre Werte\n");
       for(i=0; i < size; i++){
    	   printf("value[%d] = %d\n", i, value[i]);}
       
       Sort(value,size);
       
       return EXIT_SUCCESS;
    }
    Das Problem ist das wenn ich ein Codewort wie z.B. 0101 eingebe der Rechner 101 daraus macht. Wie könnte ich das verhindern?

    Danke im Vorraus.

  • #2
    Die Eingabe als String (char) behandeln

    Bin jetzt nicht durchgestiegen wo du das eingibst
    Christian

    Comment


    • #3
      Du liest die Eingabe als Integer ein. Integer haben nunmal die eigenschaft, NICHT mit 0 anzufangen (außer der 0 selbst ).

      Also probier in deiner Main mal statt
      Code:
      int i;
      scanf("%d", &i);
      das hier:
      Code:
      char  i[10];
      scanf("%s", &i);

      Comment

      Working...
      X