program chemie; { Automated Balancing of Chemical Equations ========================================= This software has been designed and it is CopyLefted by Han de Bruijn: (===) @-O^O-@ #/_\# ### Main program: read input and write output ----------------------------------------- } Uses SysUtils, Algemeen, Analyse, Rekenen, Synthese; var eerder : integer; procedure TijdMeting(afdruk : string); { StopWatch } var heden : integer; begin if afdruk = '' then begin eerder := DateTimeToTimeStamp(Now).Time; Exit; end; heden := DateTimeToTimeStamp(Now).Time; Writeln('[ ' + afdruk + ' : ' + IntToStr(heden-eerder) + ' ms ]'); end; procedure Verwerken; { Work to be done } const kopje : array[0..5] of string = ('', '', 'Balancing Chemical Equations', '', '', '

Balancing Chemical Equations

'); einde : array[0..1] of string = ('', ''); var invoer,uitvoer : Text; regel,kort,lang : string; msg,Bron,Doel : string; data : blok; k,hoe : integer; uit : vektor; goed,taal : boolean; fout : byte; begin TijdMeting(''); Read_Parameters(Bron,Doel,hoe); Assign(invoer,Bron); Reset(invoer); Assign(uitvoer,Doel); Rewrite(uitvoer); for k := 0 to Length(kopje)-1 do Writeln(uitvoer,kopje[k]); Writeln; while not EoF(invoer) do begin Readln(invoer, regel); if regel = '' then Continue; Writeln(regel); taal := krimpen(regel,kort); goed := false; fout := 0; lang := ''; if taal then { Syntax OK } begin ontleden(kort,data); fout := Berekenen(data,hoe,uit); goed := Formatteren(kort,uit,lang); Write(uitvoer,'' + lang + ''); end; if not taal then begin Write(uitvoer,kort); msg := ' : syntax Errors'; Writeln(uitvoer,'   ' + msg); Writeln(Copy(msg,22,16)); Writeln(uitvoer,'

'); Writeln; Continue; end; if not goed then begin msg := ' : unknown chemical elements'; Writeln(uitvoer,'   ' + msg); Writeln(Copy(msg,22,28)); Writeln(uitvoer,'

'); Writeln; Continue; end; if fout = 1 then begin msg := ' : Multiple solutions !'; Writeln(Copy(msg,22,23)); Writeln(uitvoer,'   ' + msg); Writeln(uitvoer,'

'); Writeln; Continue; end; if fout = 2 then begin msg := ' : Zero solution only !'; Writeln(Copy(msg,22,23)); Writeln(uitvoer,'   '+ msg); Writeln(uitvoer,'

'); Writeln; Continue; end; Writeln(uitvoer,'

'); Writeln; end; for k := 0 to Length(einde)-1 do Writeln(uitvoer,einde[k]); Close(uitvoer); Close(invoer); TijdMeting('Total time'); end; begin Verwerken; end.