program mehubaari(input, output); type nimet = string[60]; {epästandardi turbo-pascal piirre} {---------tähän jonon tyyppimäärittelyt: --------------------} pointer = ^tie; tie = record ni : nimet; li : pointer; end; {------------------------------------------------------------} var komento : char; {---------tähän jonon muuttujat: ----------------------------} eka, vika : pointer; {---------tähän jonon operaatiot: ---------------------------} procedure Jonoon(N: nimet); var apu : pointer; begin new(apu); apu^.ni := N; apu^.li := nil; if vika = nil then eka := apu else vika^.li := apu; vika := apu; end; procedure Jonosta(var N: nimet); {Jos jono on tyhjä, asetetaan N tyhjäksi merkkijonoksi} var apu : pointer; begin if eka = nil then N := '' else begin N := eka^.ni; apu := eka; eka := eka^.li; if eka = nil then vika := nil; dispose(apu); end end; procedure LuoTyhjaJono; begin eka := nil; vika := nil end; {---------tähän päättyy jonon toteutus-----------------------------} procedure TulostaValikko; begin writeln; writeln; writeln; writeln(' MEHUBAARIN JONOTUS'); writeln(' ******************'); writeln; writeln; writeln(' j) lisää jonottaja'); writeln(' p) palvele ensimmäistä'); writeln(' l) loppu'); writeln; end; procedure Lisays; var nimi : nimet; begin repeat write(' Asiakkaan nimi? '); readln(nimi); if nimi = '' then writeln('Tyhjä nimi ei kelpaa, anna uudelleen!'); until nimi <> ''; Jonoon(nimi); end; procedure Palvelu; var nimi : nimet; begin Jonosta(nimi); writeln; if nimi <> '' then writeln('NYT PALVELLAAN HENKILÖÄ NIMELTÄ >>> ', nimi, '<<<') else writeln('KETÄÄN EI OLE JONOSSA!! (Lepää vaikka!)'); end; begin {PÄÄOHJELMA} LuoTyhjaJono; repeat TulostaValikko; readln(komento); if komento in ['j', 'J', 'p', 'P', 'l', 'L'] then case komento of 'j', 'J' : Lisays; 'p', 'P' : Palvelu; 'l', 'L' : ; end; until komento in ['l', 'L']; end.