esercizi di chimica con turbo pascal 1.1 su mac

program noxi1a;
(* determinazione numero ossidazione elementi composto DIMOSTRATIVO *)
const k1=64;
var n:array[1..k1] of string;
    va:array[1..k1] of integer;
    q:array[1..k1] of integer;
    s,a,n1,n2,n3,v1,v2,h1,h2,h3,hy,ny:integer;  
    y,e1,e2,e3:string;
    nx,hf,h2f,h2y:real;
{$I datiy }
procedure fine;
begin
writeln('premi enter');
readln;
end;
procedure pausa;
begin
writeln('premi ENTER ');readln;
end;
procedure pro1;
begin
writeln('scrivi formula OSSIACIDO...idrogeno,non metallo,ossigeno  ');
writeln('scrivi simboli elementi e loro indici o numero di atomi');
 e1:='H';
 write('indice o numero atomi IDROGENO         ');readln(n1);
 write('simbolo elemento intermedio            ');readln(e2);
 write('indice o numero atomi elemento         ');readln(n2);
 e3:='O';
 write('indice o numero atomi OSSIGENO         ');readln(n3);
 h1:=n1*1;
 h3:=n3*2;
 h2:=h3-h1;
 writeln('----------------------------------------------');
 writeln('numeri ossidazione di ',e1,' = +',1);
 writeln('numeri ossidazione di ',e2,' = +',h2);
 writeln('numeri ossidazione di ',e3,' = -',2);
 end;
 
 procedure pro2;
begin
writeln('scrivi formula IDROSSIDO..metallo,ossigeno,idrogeno  ');
writeln('scrivi simboli elementi e loro indici o numero di atomi');
 write('simbolo primo elemento                 ');readln(e1);
 write('indice o numero atomi elemento         ');readln(n1);
 e2:='O';
 write('indice o numero atomi ossigeno         ');readln(n2);
 e3:='H';
 n3:=n2;
 h3:=n3*1;
 h2:=n3*2;
 h1:=h2-h3;
 writeln('----------------------------------------------');
 writeln(e1,h1,e2,h2,e3,h3);
 writeln('numeri ossidazione di ',e1,' = +',h1);
 writeln('numeri ossidazione di ',e2,'  = -',2);
 writeln('numeri ossidazione di ',e3,'  = +',1);
 end;
 
procedure pro6;
begin
writeln('formula SALI OSSIGENATI ');
WRITELN('nel caso di metalli con piu valenze,usare solo la valenza maggiore');
WRITELN('1,2=2...2,3=3...2,4=4 essendo programma ancora incompleto ');
WRITELN('in caso contrario si avranno risposte non corrette ');
writeln('----------------------------------------------------------------');
writeln('scrivi simboli elementi e loro indici o numero di atomi');
writeln('es.NaNO3....CaSO4...Ca(NO3)2..');
 write('simbolo metallo                  ');readln(e1);
 write('indice o numero atomi elemento   ');readln(n1);
 writeln('cerco valenza metallo ');
 writeln('Cm =valenza*indice metallo');
 datiy;
 for a:=1 to k1 do
 if e1=n[a] then begin v1:=va[a];v2:=va[a+1];
                       h1:=va[a]*n1;hy:=va[a+1]*n1; end;
 write('simbolo elemento intermedio      ');readln(e2);
 write('indice o numero atomi elemento   ');readln(n2);
 e3:='O';
 write('indice o numero atomi OSSIGENO   ');readln(n3);
 writeln('cariche negative Cn = -2*indice ossigeno  ');
 writeln('n.ossidazione ',e2,' (Cn-Cm)/indice elemento ',e2);
 h3:=2*n3; (* cariche negative ossigeno *)
 h2:=round((h3-h1)/n2); (* cariche positive elemento intermedio *)
 h2y:=round((h3-hy)/n2);
 if h2=(h3-h1)/n2 then h2f:=h2 else h2f:=h2y;
 writeln('-------------------------------------------------');
 writeln(e1,n1,e2,n2,e3,n3);
 writeln(e1,n1,'(',e2,e3,n3/n2:0:0,')',n2);
 writeln('elemento ',e1:8,' numero ossidazione= +',v1);
 writeln('elemento ',e2:8,' numero ossidazione= +',h2f:0:0);
 writeln('elemento ',e3:8,' numero ossidazione= -2');
end;
procedure pro3;
begin
writeln('scrivi formula IDRACIDI...idrogeno,non metallo ');
writeln('scrivi simboli elementi e loro indici o numero di atomi');
 e1:='H';
 write('indice o numero atomi IDROGENO         ');readln(n1);
 write('simbolo radicale acido                 ');readln(e2);
 write('indice o numero atomi RADICALE         ');readln(n2);
 h2:=n1;
 writeln('----------------------------------------------');
 writeln(e1,n1,e2,n2);
 writeln('numeri ossidazione di ',e1,' = +',1);
 writeln('numero ossidazione di ',e2,' = -',h2);
end;


procedure pro4;
begin
writeln('scrivi formula OSSIDO o ANIDRIDE ..elemento,ossigeno ');
writeln('scrivi simboli elementi e loro indici o numero di atomi');
writeln('es.SO3....N2O5...CaO....Al2O3...');
writeln('----------------------------------------------------------------');
writeln('calcola :TOTALE cariche negative=atomi ossigeno*(-2)');
writeln('calcola :N.OSSIDAZIONE elemento =totale negative/indice elemento');
writeln('----------------------------------------------------------------');
 write('simbolo primo elemento                 ');readln(e1);
 write('indice o numero atomi elemento         ');readln(n1);
 e2:='O';
 write('indice o numero atomi OSSIGENO         ');readln(n2);
 h2:=n2*2;
 nx:=h2/n1;
 writeln('----------------------------------------------');
 writeln(e1,n1,e2,n2);
 writeln('numeri ossidazione di ',e1,' = +',nx:0:0);
 writeln('numero ossidazione di ',e2,' = -',2);
end;
procedure pro5;
begin
writeln('scrivi formula SALE binario...metallo,radicale acido ');
writeln('scrivi simboli elementi e loro indici o numero di atomi');
writeln('es.NaCl....CaF2...CaS..');
writeln('----------------------------------------------------------------');
writeln('calcola :TOTALE cariche negative=atomi alogeno*(-1)');
writeln('calcola :TOTALE cariche negative=atomi   zolfo*(-2)');
writeln('calcola :N.OSSIDAZIONE elemento =totale negative/indice elemento');
writeln('----------------------------------------------------------------');
 write('simbolo elemento metallico                ');readln(e1);
 write('indice o numero atomi elemento            ');readln(n1);
 write('simbolo radicale acido                    ');readln(e2);
 write('indice o numero atomi radicale            ');readln(n2);
 if e2='S' then nx:=n2*2/n1 else nx:=n2;
 if e2<>'S' then ny:=1 else ny:=2;
 writeln('----------------------------------------------');
 writeln(e1,n1,e2,n2);
 writeln('numeri ossidazione metallo  ',e1,' = +',nx:0:0);
 writeln('numero ossidazione radicale ',e2,' = -',ny);
end;
procedure scelta;
var ancora:integer;
begin
clearscreen;
writeln('seleziona tipo problema ');
writeln('1...composti ternari come OSSIACIDI............H2SO4..HNO3 ');
writeln('2...composti ternari come IDROSSIDI............NaOH...Ca(OH)2 ');
writeln('3...composti binari come IDRACIDI..............HCl....H2S  ');
writeln('4...composti binari come OSSIDI,ANIDRIDI.......Al2O3..SO3  ');
writeln('5...composti binari come SALI di ALOGENI,ZOLFO.NaCl...CaS  ');
writeln('6...composti ternari come SALI OSSIGENATI......NaNO3..CaSO4');
writeln('9...fine ');
write('opzione=');readln(s);
clearscreen;
case s of
1:pro1;
2:pro2;
3:pro3;
4:pro4;
5:pro5;
6:pro6;
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('programma:determina numeri ossidazione in composto');
writeln('---------------------------------------------------');
writeln('premi enter');readln;
scelta;
end.