/***********************************************\
* Autor: Stefan Ruemmele / Zeiner (Kommentare)  *
* Zweck: Loesung einer Pruefungsaufgabe         *
* Datei: wuerfeln.c                             *
\***********************************************/

#include <stdlib.h>       /* fuer rand()  */
#include <stdio.h>

#define N 1000   /* maximale Anzahl der Zufallszahlen */
#define ZMAX 6   /* groesste Zufallszahl              */

void zufall(int vektor[], int n)
{
  int i;

  for(i = 0; i < n; i++) {
    vektor[i] = rand() % ZMAX + 1; /* ermittelt eine Zufallszahl
*/
  }     /* zwischen 1 und ZMAX        */
}

void haeufigkeit(int v[], int n, int h[])                 /*
------------------------------------------------------------
ermittelt, wie oft die Zahlen 1 bis 6 im Vektor v vorkommen,
das Resultat wird im Vektor h bei Index 1 bis 6 abgelegt,
Index 0 wird nicht verwendet
------------------------------------------------------------*/

{
  int i, j;

  for(i = 1; i <= ZMAX; i++) {
    h[i] = 0;
    for(j = 0; j < n; j++)
      if(v[j] == i)
        h[i]++;
  }

  /* 
     eine andere Loesung waere, da sicher ist,
     dass v nur Zahlen zwischen 1 und 6 enthaelt:  
  */

  /*
     for (i = 1; i <= ZMAX; i++) h[i] = 0;
     for (i = 0; i < n; i++)
       h[v[i]]++;
  */

}

int main(void)
{
  int i, n;
  int zufallszahlen[N], wieoft[ZMAX+1];

  printf("\nWuerfeln durch Zufallszahlenerzeugung: Wie oft?
(max. %3i) ", N);
  scanf("%i%*c", &n);
  zufall(zufallszahlen, n);   /* erzeugt die Zufallszahlen */

  haeufigkeit(zufallszahlen, n, wieoft);
  printf("\nZahl\tH"ufigkeit\n");
  printf("------------------\n");
  for(i = 1; i <= ZMAX; i++)
    printf(" %1i\t  %3i\n", i, wieoft[i]);

  getchar();
  return 0;
}




/* ----------------------------------------------------------*\
*  Dateiname: lotto.c
*  Zweck: Zweiter Ainf-Test
*  Version: 1.0
*
*  Autor: Stefan Bischof
*  Datum: 29.1.1999
\* -----------------------------------------------------------*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TRUE 0
#define FALSE 1

int zufall (void)
{
   return rand() % 45 + 1;
}

void vinit (char vektor[])
{
   int i;
   for (i = 1; i < 46; i++)
      vektor[i] = '-';
}

void lotto (char vektor [], int zahl[])
{
   int i;
   int doppelt;

   srand( (unsigned) time(NULL) % 100);

   for (i = 0; i < 6; i++)
   {
      do
      {
  doppelt = FALSE;
  zahl [i] = zufall();
  if (vektor[zahl[i]] == '*')
  doppelt = TRUE;
      } while (doppelt == TRUE);
      vektor[zahl[i]] = '*';
   }
}

int main (void)
{
   char auswahl[46];
   int zahlen[6];
   int i;

   vinit (auswahl);
   lotto (auswahl, zahlen);

   printf ("\nLottozahlengenerator 6 aus 45:\n\n");

   printf ("Mein Lottotip: ");
   for (i = 0; i < 6; i++)
      printf ("%3d", zahlen[i]);

   printf("\n\nEnde mit Eingabetaste!");
   getchar();

   return 0;
}