uses Crt, Kolmnurk, Kompleks, Taisarv, Maatriks; const servad : string[6]='Ȼͺ'; con=$0607; coff=$FFFF; menyy : array[0..4,1..6]of string[10]=(('Kolmnurk','Tisarv','Kompleks','Maatriks','',''), ('Sisestus..','Pindala ','mbermt ','mberring ','Sisering ','Koguinfo '), ('histegur ','hiskordne','','','',''), ('Sisestus..','Summa ','Vahe ','Korrutis ','Jagatis ',''), ('Sisestus..','Summa ','Korrutis ','','','')); valikuarv : array[1..4] of byte = (6,2,5,3); pikkus : array[1..4]of byte = (3,12,20,29); procedure algus; begin clrscr; textbackground(blue); gotoxy(15,10); write('Tere tulemast meie matemaatilisse maailma!!!'); gotoxy(5,11); write('Loodame, et see programm on abiks Teile mningate matemaatiliste'); gotoxy(5,12); write('tehete arvutamisel. Mens saate liikuda nooleklahvide abil ning'); gotoxy(5,13); write('kui olete oma valiku teinud vajutage lihtsalt "enter". Vljumiseks,'); gotoxy(5,14); write('aga kasutage "esc" klahvi.'); gotoxy(40,17); write('Nele Vendt ja Raido Sune'); readkey; end; procedure Escape; begin writeln;writeln('[ESC]'); repeat until readkey=#27; end; procedure joonistamenyy; var i:integer; BEGIN textattr:=7; clrscr; textbackground(green); for i:=2 to 37 do begin gotoxy(i,2); write(servad[5]); gotoxy(i,4); write(servad[5]); end; gotoxy(1,2); write(servad[1]); gotoxy(1,3); write(servad[6],' '); gotoxy(1,4); write(servad[2]); gotoxy(38,2); write(servad[3]); gotoxy(38,3); write(servad[6]); gotoxy(38,4); write(servad[4]); gotoxy(3,3); for i:=1 to 4 do write(menyy[0,i],' '); end; procedure menyoff(nr : byte); var i : byte; begin textattr:=7; for i:=1 to valikuarv[nr]+2 do begin gotoxy(pikkus[nr]-2,4+i); write('':13); end; end; procedure menyon(nr : byte); var i : byte; begin textattr:=$14; gotoxy(pikkus[nr],6); write(menyy[nr,1]); textattr:=$27; gotoxy(pikkus[nr]-1,6); write(servad[6]); gotoxy(pikkus[nr]+10,6); write(servad[6]); for i:=2 to valikuarv[nr] do begin gotoxy(pikkus[nr]-1,5+i); write(servad[6],menyy[nr,i],servad[6]); end; gotoxy(pikkus[nr]-1,5); write('ͻ'); gotoxy(pikkus[nr]-1,6+valikuarv[nr]); write('ͼ'); end; function menuchoice:byte; var valik,menynr,i : byte; ch : char; olimeny,meny : boolean; begin menynr:=1; valik:=1; meny:=false; olimeny:=false; textattr:=$14; gotoxy(3,3); write(menyy[0,1]); repeat if keypressed then begin ch:=readkey; case ch of #0:begin ch:=readkey; case ch of #72,#80: if meny then begin textattr:=$27; gotoxy(pikkus[menynr],5+valik); write(menyy[menynr,valik]); if ch=#72 then begin dec(valik); if valik=0 then valik:=valikuarv[menynr]; end else begin inc(valik); if valik=valikuarv[menynr]+1 then valik:=1; end; textattr:=$14; gotoxy(pikkus[menynr],5+valik); write(menyy[menynr,valik]); end; #75,#77: begin olimeny:=false; if meny then begin menyoff(menynr); valik:=1; olimeny:=true; end; textattr:=$27; gotoxy(pikkus[menynr],3); write(menyy[0,menynr]); if ch=#75 then begin dec(menynr); if menynr=0 then menynr:=4; end else begin inc(menynr); if menynr=5 then menynr:=1; end; if olimeny then menyon(menynr); textattr:=$14; gotoxy(pikkus[menynr],3); write(menyy[0,menynr]); end; end; end; #13:if meny then break else begin menyon(menynr); meny:=true; end; #27: if meny then begin menyoff(menynr); meny:=false; valik:=1; end else begin textattr:=7; clrscr; halt; end; end; memW[$40 : $1A] := memW[$40 : $1C]; end; until false; case menynr of 1:case valik of 1: begin writeln; writeln('1. Punktide jrgi'); writeln('2. Klgede jrgi'); repeat ch:=readkey; until ch in['1','2']; case ch of '1':menuchoice:=11; '2':menuchoice:=12; end; end; 2:menuchoice:=6; 3:menuchoice:=7; 4:menuchoice:=8; 5:menuchoice:=9; 6:menuchoice:=10; end; 2:case valik of 1:menuchoice:=13; 2:menuchoice:=14; end; 3:case valik of 1:menuchoice:=15; 2:menuchoice:=16; 3:menuchoice:=17; 4:menuchoice:=18; 5:menuchoice:=19; end; 4:case valik of 1:menuchoice:=20; 2:menuchoice:=21; 3:menuchoice:=22; end; end; textattr:=7; end; procedure kursor(w : word); assembler; asm mov ah,1 mov cx,w int 10h end; const sees: byte=0; seeskomp: byte=0; seesmaat: byte=0; var Ch : Char; Key : byte; begin kursor(coff); textbackground(green); algus; clrscr; begin clrscr; while true do begin joonistamenyy; Key := MenuChoice; clrscr; if Ch=#27 then begin textattr:=$7; clrscr; halt(1); end; case Key of 6:begin if sees=0 then writeln('!!! Pole kolmnurka sisestatud !!!') else writeln('Kolmnurga Pindala=',KolmnurgaPindala:10:6); Escape; end; 7:begin if sees=0 then writeln('!!! Pole kolmnurka sisestatud !!!') else writeln('Kolmnurga Ymbermt=',KolmnurgaYmbermoot:10:6); Escape; end; 8:begin if sees=0 then writeln('!!! Pole kolmnurka sisestatud !!!') else writeln('Kolmnurga mberringi pindala=',YmberRingPind:10:6); Escape; end; 9:begin if sees=0 then writeln('!!! Pole kolmnurka sisestatud !!!') else writeln('Kolmnurga siseringi pindala=',SiseRingPind:10:6); Escape; end; 10:begin if sees=0 then writeln('!!! Pole kolmnurka sisestatud !!!') else begin writeln('See kolmnurk on ',KolmnurgaLiik); writeln('klgedega ab=',ab:10:6); writeln(' bc=',bc:10:6); writeln(' ac=',ac:10:6); writeln('Kolmnurga Pindala=',KolmnurgaPindala:10:6); writeln('Kolmnurga Ymbermt=',KolmnurgaYmbermoot:10:6); writeln('Kolmnurga mberringi pindala=',YmberRingPind:10:6); writeln('Kolmnurga siseringi pindala=',SiseRingPind:10:6); end; Escape; end; 11,12:begin repeat if Key=11 then SisKolmnurk(1) else SisKolmnurk(2); if OnKolmnurk=false then writeln('See pole kolmnurk, sisesta uuesti.'); until OnKolmnurk=true; writeln('See kolmnurk on ',KolmnurgaLiik); writeln('klgedega ab=',ab:10:6); writeln(' bc=',bc:10:6); writeln(' ac=',ac:10:6); Escape; sees:=1; end; 15:begin SisKomp; ValKomp; seeskomp:=1; Escape; end; 16:begin if seeskomp=0 then writeln('!!! Pole kompleksarve sisestatud !!!') else begin Valkomp; KompSum; write('Z1+Z2=',kompsumma.Re:8:3); if kompsumma.Im>=0 then write('+'); writeln(kompsumma.Im:8:2,'i'); end; Escape; end; 17:begin if seeskomp=0 then writeln('!!! Pole kompleksarve sisestatud !!!') else begin Valkomp; KomplVahe; write('Z1-Z2=',kompvahe.Re:8:3); if kompvahe.Im>=0 then write('+'); writeln(kompvahe.Im:8:2,'i'); end; Escape; end; 18:begin if seeskomp=0 then writeln('!!! Pole kompleksarve sisestatud !!!') else begin Valkomp; KompKorru; write('Z1*Z2=',kompkorrutis.Re:8:3); if kompkorrutis.Im>=0 then write('+'); writeln(kompkorrutis.Im:8:2,'i'); end; Escape; end; 19:begin if seeskomp=0 then writeln('!!! Pole kompleksarve sisestatud !!!') else begin Valkomp; KompJaga; write('Z1/Z2=',kompjagatis.Re:8:3); if kompjagatis.Im>=0 then write('+'); writeln(kompjagatis.Im:8:2,'i'); end; Escape; end; 13:begin SisTais; ValjaTais; SuurimYhisTegur; writeln('Suurim histegur=',syt);writeln; writeln('Arvupaar prast taandamist(jagamist suurima histeguriga):'); writeln('a:=',taandpaar.a,' b:=',taandpaar.b); Escape; end; 14:begin SisTais; ValjaTais; VahimYhiskordne; Escape; end; 20:begin SisMaat; ValjaMaat; seesmaat:=1; Escape; end; 21:begin if seesmaat=0 then writeln('!!! Maatrikseid pole sisestatud !!!') else begin ValjaMaat; MaatSum; end; Escape; end; 22:begin if seesmaat=0 then writeln('!!! Maatrikseid pole sisestatud !!!') else begin ValjaMaat; MaatKorru; end; Escape; end; end;{case} clrscr; end;{while} end; end.