{ Tämä on luennolla 14.10.96 esitetty lammaslaskentaesimerkki:
  Lampaita on mustia, valkoisia ja muita. Ne koodataan merkkeinä
    'M', 'm'  musta
    'V', 'v'  valkoinen
    'E', 'e'  muu eli erilainen.
  Tee ohjelma lammaslaskentaan. Merkki '*' lopettaa syötön,
  muut merkit kuin luetellut kirjaimet ja loppumerkki jätetään 
  huomiotta. (Rivinvaihto on luettuna välilyönti!) }

program Lampaat(input, output);

  {tietorakenteet:}
  var mustia, valkeita, erila: integer;
      merkki: char;

procedure Kirjaa(x: char);
  begin
    if x in ['M', 'm', 'V', 'v', 'E', 'e'] then
      case x of 
         'M', 'm': mustia := mustia + 1;
         'V', 'v': valkeita := valkeita + 1;
         'E', 'e': erila := erila + 1;
      end;
  end; {of Kirjaa}

procedure AlkuarvotJaOtsikko;
  begin
    mustia := 0; valkeita := 0; erila := 0;
    writeln('Lammaslaskentaohjelma');
    writeln('*********************                        copyright AW 1995');
    writeln;
    writeln('m musta, v valkoinen, e muu');
    writeln('* lopettaa');
    writeln;
  end;

procedure TulostaTulokset;
  begin 
    writeln;
    writeln('mustia:    ', mustia:1);
    writeln('valkoisia: ', valkeita:1);
    writeln('muita:     ', erila:1);
  end;

begin {PÄÄOHJELMA}
  AlkuarvotJaOtsikko; 
  read(merkki);
  while merkki <> '*' do
    begin
      Kirjaa(merkki);
      read(merkki);  
    end;
  TulostaTulokset; 
end.

