Program Lottozahlen(input,output);
{vergleicht gezogene Lottozahlen mit gespeicherten Lottoreihen}


Const
MIN = 1;
MAX = 49;
REIHE = 49;
MaxZahl = 14;
DATEINAME = 'c:/tp7/bin/user/Lotdat.dat';

type
tReihenZahl = MIN..REIHE;
tZahlenbereich = MIN..MAX;
tLottoIndex = MIN..MaxZahl;
tReihenIndex = MIN..REIHE;
tZahlIndex = MIN..6;
tLottoFeld = array[tLottoIndex] of tZahlenbereich;
tReihenFeld = array[tReihenIndex] of tLottoFeld;
tLottoEingabe = array[tZahlIndex] of tZahlenbereich;

VAR
YesNo:String;
Datei:text;
i : tLottoIndex;
j : tReihenIndex;
k : tZahlIndex;
LottoFeld : tLottoFeld;
ReihenFeld : tReihenFeld;
LottoEingabe : tLottoEingabe;
SuperZahl,
ZusatzZahl,
Dreier,
DreierMitZZ,
Vierer,
ViererMitZZ,
Fuenfer,
FuenferMitZZ,
Sechser,
SechserMitSZ : integer;

Procedure Abspeichern(inReihenfeld: tReihenfeld;
                      inLottoFeld:  tLottofeld);
  {abspeichern der Lottoreihen}

  begin
    assign(datei,DATEINAME);
    Rewrite(datei);
    for j := MIN to REIHE do
    begin
      inLottoFeld := inReihenFeld[j];
      for i := MIN to MaxZahl do
      begin
        writeln(datei,inLottoFeld[i]);
      end
    end;
    close(datei)
  end;{abspeichern}

Procedure Laden(Var outReihenfeld: tReihenfeld;
                Var outLottoFeld:  tLottofeld);
  {Laden der Lottoreihen}

  begin
    assign(datei,DATEINAME);
    reset(datei);
    for j := MIN to REIHE do
    begin
      for i := MIN to MaxZahl do
        readln(datei,outLottoFeld[i]);
      outReihenFeld[j] := outLottoFeld
    end;
    close(datei)
  end;{Laden}






procedure Ausgeben(inReihenfeld:tReihenfeld;
                   inLottofeld:tLottoFeld);
  {gibt Reihenfeld auf dem Bildschirm aus}
  begin
     writeln(' Ausgabe   !!!');
     write;
     for j := MIN to REIHE do
     begin
       if (J = 20) or (J = 40) then
       begin
         writeln;
         writeln('weiter ?');
         writeln;
         readln
       end;
       inLottoFeld := inReihenFeld[j];
       writeln('  ',  j:2,'.Lottoreihe SZ: ',inLottofeld[1]:2,' Lottozahlen :  ',inLottoFeld[2]:2,
               ' ',inLottofeld[3]:2,' ',inLottofeld[4]:2,' ',inLottofeld[5]:2,' ',
               inLottofeld[6]:2,' ',inLottofeld[7]:2,' ',inLottofeld[8]:2,' ',inLottofeld[9]:2,' ',
               inLottofeld[10]:2,' ',inLottofeld[11]:2,' ',inLottofeld[12]:2,' ',inLottofeld[13]:2)
     end
  end;{Ausgeben}

Procedure Eingeben(var outReihenfeld: tReihenfeld;
                   var outLottofeld:  tLottofeld);
  {Reihenfeld eingeben}
  begin
    writeln('   Bitte Lottoreihen eingeben! Leere Stellen mit 0 auffllen! ');
    writeln('   Mit Superzahl beginnen!');
    for j := MIN to REIHE do
    begin
      for i := MIN to MaxZahl do
        readln(outLottoFeld[i]);
      if j < Reihe then
        writeln(' n„chste Lottoreihe bitte! ');
      outReihenFeld[j] := outLottoFeld
    end
  end;{eingeben}

Procedure Treffer(inReihenfeld: tReihenfeld;
                  inLottofeld: tLottofeld;
                  inLottoeingabe: tLottoeingabe;
                  inZZ,
                  inSZ: integer;
                  var outDreier: integer;
                  var outDreierZZ: integer;
                  var outVierer: integer;
                  var outViererZZ: integer;
                  var outFuenfer: integer;
                  var outfuenferZZ: integer;
                  var outSechser: integer;
                  var outSechserSZ: integer);
  {ermittelt Lottotreffer}
  var
  ZZTreffer,
  SZTreffer,
  Treffer : integer;
  begin
    outDreier := 0;
    outDreierZZ := 0;
    outVierer := 0;
    outViererZZ := 0;
    outFuenfer := 0;
    outFuenferZZ := 0;
    outSechser := 0;
    outSechserSZ := 0;
    for j := MIN to REIHE do
    begin
      Treffer := 0;
      ZZTreffer := 0;
      SZTreffer := 0;
      inLottoFeld := inReihenFeld[j];
      if inSZ = inLottofeld[1] then
        SZTreffer := SZTreffer +1;
      for i := 2 to MaxZahl do
      begin
        for k := MIN to 6 do
        begin
          if inLottoeingabe[k] = inLottofeld[i] then
            Treffer := Treffer + 1;
          if inLottofeld[i] = inZZ then
            ZZTreffer := 1;
        end
      end;
      if (Treffer = 3) and (ZZTreffer <> 1) then
        outDreier := outDreier + 1;
      if (Treffer = 3) and (ZZTreffer = 1) then
        outDreierZZ := OutDreierZZ + 1;
      if (Treffer = 4) and (ZZTreffer <> 1) then
        outVierer := outVierer + 1;
      if (Treffer = 4) and (ZZTreffer = 1) then
        outViererZZ := outViererZZ + 1;
      if (Treffer = 5) and (ZZTreffer <> 1) then
        outFuenfer := outFuenfer + 1;
      if (Treffer = 5) and (ZZTreffer = 1) then
        outFuenferZZ := OutFuenferZZ + 1;
      if (Treffer = 6) and (SZTreffer <> 1) then
        outSechser := outSechser + 1;
      if (Treffer = 6) and (SZTreffer = 1) then
        outSechserSZ := OutSechserSZ + 1
    end;
  end;{Treffer}

Procedure Eingabe(var outLottoeingabe: tLottoeingabe;
                  var outZZ: integer;
                  var outSZ: integer);
  {Lottozahlen Eingeben}
  begin
    writeln('Bitte gezogene Lottozahlen eingeben: ');
    for k := MIN to 6 do
      readln(Lottoeingabe[k]);
    writeln('Bitte Zusatzzahl und Superzahl eingeben : ');
    readln(outZZ,outSZ)
  end;{Eingabe}

procedure Auswertung(inDreier,
                    inDreierZZ,
                    inVierer,
                    inViererZZ,
                    inFuenfer,
                    inFuenferZZ,
                    inSechser,
                    inSechserSZ: integer);

  {gibt eine Auswertung auf dem Bildschirm aus}

  begin
    writeln(' In den eingegebenen oder geladenen Lottoreihen wurden folgende ');
    writeln(' Lottotreffer gefunden : ');
    writeln;
    writeln('  ',inDreier,'  Dreier');
    writeln('  ',inDreierZZ,'  Dreier mit Zusatzzahl');
    writeln('  ',inVierer,'  Vierer');
    writeln('  ',inViererZZ,'  Vierer mit Zusatzzahl');
    writeln('  ',inFuenfer,'  Fnfer');
    writeln('  ',inFuenferZZ,'  Fnfer mit Zusatzzahl');
    writeln('  ',inSechser,'  Sechser');
    writeln('  ',inSechserSZ,'  Sechser mit Superzahl');
    Writeln;
    writeln('  Herzlichen Glckwunsch oder auch nicht   ...');
  end;{Auswertung}



begin {Hauptprogramm}
  Writeln('Lottoreihen eingeben <E>');
  Writeln('Lottoreihen laden    <L>');
  writeln('Lottoreihen ausgeben <A>');
  repeat
  write(' ??? ');
  readln(YesNo);
  if (YesNo = 'E') or (YesNo = 'e') then
  begin
    eingeben(reihenfeld,lottofeld);
    abspeichern(reihenfeld,lottofeld);
  end
  else
    if (YesNo = 'L') or (YesNo = 'l') then
    begin
      Laden(reihenfeld,lottofeld);
      writeln('geladen');
      eingabe(lottoeingabe,ZusatzZahl,SuperZahl);
      Treffer(Reihenfeld,Lottofeld,Lottoeingabe,ZusatzZahl,SuperZahl,Dreier,DreierMitZZ,
              Vierer,ViererMitZZ,Fuenfer,FuenferMitZZ,Sechser,SechserMitSZ);
      Auswertung(Dreier,DreierMitZZ,
              Vierer,ViererMitZZ,Fuenfer,FuenferMitZZ,Sechser,SechserMitSZ);
      writeln;
      Writeln('Lottoreihen eingeben <E>');
      writeln('Lottoreihen laden    <L>');
      writeln('Lottoreihen ausgeben <A>');
      write(' ??? ')
    end
    else
    begin
      Laden(reihenfeld,lottofeld);
      ausgeben(reihenfeld,lottofeld);
      writeln;
      Writeln('Lottoreihen eingeben <E>');
      writeln('Lottorehen  laden    <L>');
      writeln('Lottoreihen ausgeben <A>');
      write(' ??? ')
    end
  until eof;
end.{Lottozahlen}

Anfang   zurück