rand



  • Danke für eure tipps !!
    👍



  • curb schrieb:

    Danke für eure tipps !!
    👍

    und wie hast du es jetzt gemacht, zeig doch mal den code!



  • ich mach es jetzt so...

    void mischen(int* zahl)
    {   
    
        srand(time(0));
        int i,temp,t;
        for (i = 100; i > 0; i--) 
          { 
            t= rand()%8;    
            temp = zahl[0];
            zahl[0] =  zahl[t];
            zahl[t] = temp;
          }
    }
    

    da ich von swap nichts finde und es besser aussieht als meine erste mischfunktion...(konstruktive kritik ist aber immer erwünscht)
    obwohl ich sagen muss, mit der lösung bin ich ganz zu frieden..



  • ps:

    ich könnte die schleife auch auf <8 verkürzen und statt zahl[0] auch zahl[i] verwenden...spreche ja von einem array[8]...



  • curb schrieb:

    ps:

    ich könnte die schleife auch auf <8 verkürzen und statt zahl[0] auch zahl[i] verwenden...spreche ja von einem array[8]...

    Genauso meinte ich es auch. 100 mal brauchst du das nicht zu durchlaufen. Ich habe es eben mit folgendem Code getestet.

    void mischen(int* zahl) {  
    
        srand(time(0));
        int temp, t;
        for (int i = 8; i > 0; i--) {
            t = rand() % i;
            temp = zahl[i - 1];
            zahl[i - 1] = zahl[t];
            zahl[t] = temp;
        }
    }
    


  • hab da mal nur ein anderes problem das ich nicht verstehe..

    ich hab das auf char umgeschrieben...

    void mischen(char* zahl)
    {   
    
        srand(time(0));
        int i;
        char temp,t;
        for (i = 100; i > 0; i--) 
          { 
            t= rand()%8;    
            temp = zahl[0];
            zahl[0] = zahl[t];
            zahl[t] = temp;
          }
    }
    

    und in der main:

    int main(void)
    {   
        int i;
    
        char zahl[8]={1,2,3,4,5,6,7,8};
        char ein[8];
    
        mischen(zahl);
    
        for (i=0;i<8;i++)
        {
          printf("%d",zahl[i]);
        }
    }
    

    warum muss ich hier %d verwenden um meine zahlen ordentlich zu sehen bei einem char array??? denn bei %c oder %s kommt schwachsinn raus 😕



  • ah sorry hab bemerkt, dass \0 fehlt im string bei der definition...

    glaub das ist das problem



  • Habs nicht ausprobiert, aber es könnte durchaus daran liegen, daß das t ein int bleiben sollte 😉



  • ich denke es ist im prinzip egal ob t ein integer oder ein char is...



  • Es ist im Prinzip auch egal. Aber der "Schwachsinn" könnte damit zusammenhängen, daß du Zahlen 1-8 bearbeitest was ja den ASCII-Codes des "Schwachsinns" entspricht 😉


Anmelden zum Antworten