Integer zu String



  • Hallo Community.
    Ich arbeite immer noch am Mastermin-Programm (Beitrag: Vergleichen von Arrays)
    und bin nun auf folgendes Problem gestossen:
    Laut aufgabe sollen alle Zahlen, welche richtig, aber an der falschen Stelle sind, mit einem "X", und alle Zahlen mit richtiger Position direkt ausgegeben werden.

    Wie Ihr vielleicht schon vermutet, möchte ich nun wissen, wie ich die Zufallszahl in einen String bzw. Char (Da es nur Zahlen von 1-6 sind) umwandeln kann.

    Ich habe schon..
    - (char)Zufallszahl[x]
    - itoa(Zufallszahl[x], Resultat[x], 10)

    .. probiert.

    Nun die Frage:
    Was ist eine gute Variante, dass ich zu der richtigen Ausgabe komme?
    Soll ich die Integervariable anders konvertieren, und wenn ja, wie?
    Oder soll ich ein anderes Output-Symbol verwenden?

    mfg
    Cloudseph



  • itoa ist nicht portabel, weil sie nicht im Standard definiert ist. Nimm sprintf dafür:

    int r = <random_value>;
    char buff[125];
    sprintf(buff, "%d", r);
    


  • Da es sich nur um einzelne Ziffern handelt, kannst du auch folgendes tun:

    int i = 5;
    char c = '0' + i;
    


  • Lass doch den ASCII Code der Zahlen im Bereich 49 - 54 generieren, dann hast du die Konvertierung sozusagen frei Haus und brauchst die Benutzereingabe nicht umzuwandeln.

    #define N 4
    int irand ( int a, int b ) 
    { 
        double r = b - a + 1; 
        return a + (int)(r * rand()/(RAND_MAX+1.0)); 
    } 
    	char Z[N]={0};
    	int i = 0;
    	srand ( time(0) );
    	while ( i < N )
    		Z[i++] = irand ( 49, 54 );
    


  • Hat sich alles geregelt, danke trozdem für den Hinweis.

    Jetzt aber doch noch ne Frage: aktuell hab ich das für 1 Durchlauf, bräuchte aber n Durchlauf bis alle 4 Zahlen richtig beantwortet wurden.
    Dies hab ich folgendermassen probiert:

    while(Gewonnen < 4){
      /* Die 4 Zahlen als String eingeben */
      printf("Bitte die Zeichen eingeben: ");
      gets(Eingabestring);
      /* Den String zerlegen */
      sscanf(Eingabestring, "%i %i %i %i", &Eingabe[0], &Eingabe[1], &Eingabe[2], &Eingabe[3]);    
    
      i = 0;
    
      while(i<4){
         Gewonnen = 0;
         if(Zufallszahl[i] == Eingabe[i]){
            printf("%i ", Zufallszahl[i]);
            ++Gewonnen;
         }
         else{
            j = 0;
            while(j<4){
               if(Zufallszahl[i] == Eingabe[j]){
                  printf("X ");
                  j = 4;
               }
               ++j;
            }
         }
         ++i;     
      }
    }
    

    Jedoch bricht es trozdem nicht bei allen 4 richtigen Zahlen ab.
    Sieht jemand gerade den Fehler?



  • Janjan schrieb:

    Da es sich nur um einzelne Ziffern handelt, kannst du auch folgendes tun:

    int i = 5;
    char c = '0' + i;
    

    ja, aber c ist kein String mehr.

    @op: brauchst du strings oder nicht?



  • supertux schrieb:

    Janjan schrieb:

    Da es sich nur um einzelne Ziffern handelt, kannst du auch folgendes tun:

    int i = 5;
    char c = '0' + i;
    

    ja, aber c ist kein String mehr.

    Cloudseph schrieb:

    wie ich die Zufallszahl in einen String bzw. Char (Da es nur Zahlen von 1-6 sind) umwandeln kann.



  • welchen Zweck hat eig die 2. while-schleife? das leuchtet mir irgwie nicht ein

    Das Gewonnen = 0 nach der 2. while-schleife muss vor die 2. while-schleife. Sonst wird ja jedes mal Gewonnen zurückgesetzt.


Anmelden zum Antworten