esercizi di chimica con turbo pascal 1.1 su mac

program dinami2;  (* solo su mac non DOS *)
(* soluzione problemi equilibrio chimico *)
(* si calcola Ke con concentrazioni note da inserire *)
uses sane;
var r1,r2,p1,p2,ke:real;
    cr1,cr2,cp1,cp2:integer;
    s:integer;  
procedure fine;
begin
writeln('premi enter');
readln;
end;
procedure pausa;
begin
writeln('premi enter');readln;
end;
procedure esamina(x:real);
begin
if x>1 then writeln('equilibrio spostato verso destra,prodotti')
else if x=1 then writeln('equilibrio indifferente') 
else writeln('equilibrio spostato verso sinistra,reagenti');
end;
procedure pro1;
begin
writeln('inserire concentrazioni molari ');
write('concentrazione reattivo1  r1  ');readln(r1);
write('concentrazione reattivo2  r2  ');readln(r2);
write('concentrazione prodotto1  p1  ');readln(p1);
write('concentrazione prodotto2  p2  ');readln(p2);
writeln('inserire coefficienti:anche se =1 ');
write('coefficiente reattivo1    cr1 ');readln(cr1);
write('coefficiente reattivo2    cr2 ');readln(cr2);
write('coefficiente prodotto1    cp1 ');readln(cp1);
write('coefficiente prodotto2    cp2 ');readln(cp2);
r1:=xpwri(r1,cr1);
r2:=xpwri(r2,cr2);
p1:=xpwri(p1,cp1);
p2:=xpwri(p2,cp2);
writeln('calcolo concentrazioni elevate a proprio esponente ');
writeln('p1=',p1,'..p2=',p2,'..r1=',r1,'..r2=',r2);
writeln;
writeln(' Ke=(p1*p2)/(r1*r2) ');
ke:=(p1*p2)/(r1*r2);esamina(ke);
writeln(ke:8:6,'...',ke);
pausa;
end;
procedure pro2;
begin
writeln('inserire concentrazioni molari ');
write('concentrazione reattivo1  r1  ');readln(r1);
write('concentrazione reattivo2  r2  ');readln(r2);
write('concentrazione prodotto1  p1  ');readln(p1);
writeln('inserire coefficienti:anche se =1 ');
write('coefficiente reattivo1    cr1 ');readln(cr1);
write('coefficiente reattivo2    cr2 ');readln(cr2);
write('coefficiente prodotto1    cp1 ');readln(cp1);
r1:=xpwri(r1,cr1);
r2:=xpwri(r2,cr2);
p1:=xpwri(p1,cp1);
writeln('calcolo concentrazioni elevate a proprio esponente ');
writeln('p1=',p1,'..r1=',r1,'..r2=',r2);
writeln;
writeln(' Ke=(p1)/(r1*r2) ');
ke:=(p1)/(r1*r2);esamina(ke);
writeln(ke:8:6,'...',ke);
pausa;
end;
procedure pro3;
begin
writeln('inserire concentrazioni molari ');
write('concentrazione reattivo1  r1  ');readln(r1);
write('concentrazione prodotto1  p1  ');readln(p1);
write('concentrazione prodotto2  p2  ');readln(p2);
writeln('inserire coefficienti:anche se =1 ');
write('coefficiente reattivo1    cr1 ');readln(cr1);
write('coefficiente prodotto1    cp1 ');readln(cp1);
write('coefficiente prodotto2    cp2 ');readln(cp2);
r1:=xpwri(r1,cr1);
p1:=xpwri(p1,cp1);
p2:=xpwri(p2,cp2);
writeln('calcolo concentrazioni elevate a proprio esponente ');
writeln('p1=',p1,'..p2=',p2,'..r1=',r1);
writeln;
writeln(' Ke=(p1*p2)/(r1) ');
ke:=(p1*p2)/(r1);esamina(ke);
writeln(ke:8:6,'...',ke);
pausa;
end;
procedure pro4;
begin
writeln('inserire concentrazioni molari ');
write('concentrazione reattivo1  r1  ');readln(r1);
write('concentrazione prodotto1  p1  ');readln(p1);
writeln('inserire coefficienti:anche se =1 ');
write('coefficiente reattivo1    cr1 ');readln(cr1);
write('coefficiente prodotto1    cp1 ');readln(cp1);
r1:=xpwri(r1,cr1);
p1:=xpwri(p1,cp1);
writeln('calcolo concentrazioni elevate a proprio esponente ');
writeln('p1=',p1,'..r1=',r1);
writeln;
writeln(' Ke=(p1)/(r1) ');
ke:=(p1)/(r1);esamina(ke);
writeln(ke:8:6,'...',ke);
pausa;
end;
procedure scelta;
var ancora:integer;
begin
clearscreen;
writeln('seleziona tipo problema ');
writeln('1...calcolare Ke con 2 reattivi e 2 prodotti');
writeln('2...calcolare Ke con 2 reattivi e 1 prodotti');
writeln('3...calcolare Ke con 1 reattivo e 2 prodotti');
writeln('4...calcolare Ke con 1 reattivi e 1 prodotti');
writeln('9...fine ');
write('opzione=');readln(s);
clearscreen;
case s of
1:pro1;
2:pro2;
3:pro3;
4:pro4;
9:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;
begin
clearscreen;
writeln('funzione programma:calcolo costante equilibrio Ke');
writeln('---------------------------------------------------');
writeln('premi enter');readln;
scelta;
end.