[C-Projekt] Würfel-Simulator (Konsolenprogramm)



  • /*
    Titel                :      Wuerfel-Simulator   
    Autor                :      
    Letzte Aenderung     :      15.06.2009
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void fkt(int array[],int laenge, int *wdh)
    {
    
    int i,x;
    
    	for(i=0;i<=(*wdh-1);i++)
    	{
    		x=rand()%7;
    
    			switch(x)
    			{
    
                    case 0:
                         i--;
                         continue;
                    case 1:
    					array[0]++;
    					break;
    				case 2:
    					array[1]++;
    					break;
    				case 3:
    					array[2]++;
    					break;
    				case 4:
    					array[3]++;
    					break;
    				case 5:
    					array[4]++;
    					break;
    				case 6:
    					array[5]++;
    					break;
    				default:
    					break;
    			}
    	}
    }
    
    void ausgabe(int array[],int *count)
    {
        printf("Relative Haeufigkeit von Augenzahl 1\t:\t%d/%d = %.4f = %.4f%%\n",array[0],*count,(float)array[0]/(*count),((float)array[0]/(*count))*100);
        printf("Relative Haeufigkeit von Augenzahl 2\t:\t%d/%d = %.4f = %.4f%%\n",array[1],*count,(float)array[1]/(*count),((float)array[1]/(*count))*100);
    	printf("Relative Haeufigkeit von Augenzahl 3\t:\t%d/%d = %.4f = %.4f%%\n",array[2],*count,(float)array[2]/(*count),((float)array[2]/(*count))*100);
    	printf("Relative Haeufigkeit von Augenzahl 4\t:\t%d/%d = %.4f = %.4f%%\n",array[3],*count,(float)array[3]/(*count),((float)array[3]/(*count))*100);
    	printf("Relative Haeufigkeit von Augenzahl 5\t:\t%d/%d = %.4f = %.4f%%\n",array[4],*count,(float)array[4]/(*count),((float)array[4]/(*count))*100);
    	printf("Relative Haeufigkeit von Augenzahl 6\t:\t%d/%d = %.4f = %.4f%%\n",array[5],*count,(float)array[5]/(*count),((float)array[5]/(*count))*100);
    	printf("\n");
    }
    
    int main()
    {
        srand(time(NULL));
    
        while(1)
        {
         unsigned int array[6]={0,0,0,0,0,0}, count;
    
         printf("Erwuenschte Anzahl der Wiederholungen: ");
    	 scanf("%d", &count);
    	 fflush(stdin);
    	 printf("\n");
    
    	 fkt(array, 6, &count);
    	 ausgabe(array, &count);
        }
    
    	system("PAUSE");
    	return 0;
    }
    

    So, das ist mein zweites aktuelles Projekt in C 😃
    Verbesserungsvorschläge oder Bugs bitte melden bzw. posten, DANKE! 🙂

    Zum Programm:

    Das Programm simuliert einen Würfel der nach wunsch so und so viel mal gewürfelt wird. Anschließend wertet das Programm die relative Häufigkeit aus (4 Nachkommastellen genau). Somit bleibt die Arbeit erspart und der Computer macht eben die Sklavenarbeit :p

    Grüße
    agi 🙂



  • aXYZn schrieb:

    /*
    
    void ausgabe(int array[],int *count)
    {
        printf("Relative Haeufigkeit von Augenzahl 1\t:\t%d/%d = %.4f = %.4f%%\n",array[0],*count,(float)array[0]/(*count),((float)array[0]/(*count))*100);
        printf("Relative Haeufigkeit von Augenzahl 2\t:\t%d/%d = %.4f = %.4f%%\n",array[1],*count,(float)array[1]/(*count),((float)array[1]/(*count))*100);
    	printf("Relative Haeufigkeit von Augenzahl 3\t:\t%d/%d = %.4f = %.4f%%\n",array[2],*count,(float)array[2]/(*count),((float)array[2]/(*count))*100);
    	printf("Relative Haeufigkeit von Augenzahl 4\t:\t%d/%d = %.4f = %.4f%%\n",array[3],*count,(float)array[3]/(*count),((float)array[3]/(*count))*100);
    	printf("Relative Haeufigkeit von Augenzahl 5\t:\t%d/%d = %.4f = %.4f%%\n",array[4],*count,(float)array[4]/(*count),((float)array[4]/(*count))*100);
    	printf("Relative Haeufigkeit von Augenzahl 6\t:\t%d/%d = %.4f = %.4f%%\n",array[5],*count,(float)array[5]/(*count),((float)array[5]/(*count))*100);
    	printf("\n");
    }
    

    du scheinst ja schleifen schon zu kennen, das schreit gerade zu nach einer 😉



  • for(i = 0; i <= (*wdh-1); i++) 
            array[rand() % 6]++;
    

    hmmm... 😉



  • fflush(stdin) solltest du nicht verwenden. Ist zwar beim MS-Compiler erlaubt, aber woanders dann vielleicht nicht mehr. Es gibt standard-konforme Lösungen, guckst du hier:

    http://www.c-plusplus.net/forum/viewtopic.php?t=39349



  • /*
    Titel                :      Wuerfel-Simulator   
    Autor                :      
    Letzte Aenderung     :      16.06.2009
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void ausgabe(int*, int*);
    
    int main()
    {
        srand(time(NULL));
    
        while(1)
        {
            unsigned int array[6]={0,0,0,0,0,0}, anz;
            int c;
    
            printf("Erwuenschte Anzahl der Wiederholungen: ");
    	    scanf("%d", &anz);
                while((c = getchar()) != EOF && c != '\n'); // fflush Alternative
            ausgabe(array, &anz);
        }
    }
    
    void ausgabe(int array[], int *wdh)
    {
    
        int i;
    
            for(i=0; i < (*wdh); i++)
    	    {
    	        array[rand() % 6]++;
            }
    
        printf("\n");
        printf("Relative Haeufigkeit von Augenzahl 1\t:\t%d/%d = %.3f = %.4f%%\n",array[0],(*wdh),(float)array[0]/(*wdh),((float)array[0]/(*wdh))*100);
        printf("Relative Haeufigkeit von Augenzahl 2\t:\t%d/%d = %.3f = %.4f%%\n",array[1],(*wdh),(float)array[1]/(*wdh),((float)array[1]/(*wdh))*100);
    	printf("Relative Haeufigkeit von Augenzahl 3\t:\t%d/%d = %.3f = %.4f%%\n",array[2],(*wdh),(float)array[2]/(*wdh),((float)array[2]/(*wdh))*100);
    	printf("Relative Haeufigkeit von Augenzahl 4\t:\t%d/%d = %.3f = %.4f%%\n",array[3],(*wdh),(float)array[3]/(*wdh),((float)array[3]/(*wdh))*100);
    	printf("Relative Haeufigkeit von Augenzahl 5\t:\t%d/%d = %.3f = %.4f%%\n",array[4],(*wdh),(float)array[4]/(*wdh),((float)array[4]/(*wdh))*100);
    	printf("Relative Haeufigkeit von Augenzahl 6\t:\t%d/%d = %.3f = %.4f%%\n",array[5],(*wdh),(float)array[5]/(*wdh),((float)array[5]/(*wdh))*100);
    	printf("\n");
    }
    

    WOW, danke _matze und hustbaer 👍

    Grüße
    agi 🙂

    Edit:
    😉



  • aXYZn schrieb:

    matze_

    Hey! Es heißt _matze, bitte. Der Unterstrich ist mir sehr wichtig... 😃 😉



  • printf hättest in dem fall aber auch in ne schleife packen können, oder überseh ich grad was



  • PRIEST schrieb:

    printf hättest in dem fall aber auch in ne schleife packen können, oder überseh ich grad was

    void ausgabe (int array[], int wdh)
    {
    
        int i;
    
        for(i=0; i < wdh; i++)
        	array[rand() % 6]++;
    
    	for (i=0; i<6; i++)
    	    printf("Relative Haeufigkeit von Augenzahl %d\t:\t%d/%d = %.3f = %.4f%%\n",
    				i+1,
    				array[i],
    				wdh,
    				(float)array[i]/wdh,
    				(float)array[i]/wdh*100);
    }
    

    wdh muß nicht als Zeiger übergeben werden


Anmelden zum Antworten