esercizi di chimica con turbo pascal 1.1 su mac

program riduz1;
(* terminologia reazioni redox con valutazione finale *)
const n=20;
var a,b,esatte,errate:integer;
    ox,rd:string[5];
    s:array[1..n] of string[200];
    os:array[1..n] of string[5];
    ri:array[1..n] of string[5];
    no:array[1..n] of string[10];
    nr:array[1..n] of string[10];
 
procedure cancella;
begin
clearscreen;
end;
   
procedure dati;
begin
 s[1]:='2H2 + O2 -----> 2 H2O ';os[1]:='O';ri[1]:='H';
 no[1]:='0..-2';nr[1]:='0..+1';
 s[2]:='H2 + Cl2 -----> 2 HCl ';os[2]:='Cl';ri[2]:='H'; 
 no[2]:='0..-1';nr[2]:='0..+1';  
 s[3]:='3H2 + N2 -----> 2 NH3 ';os[3]:='N';ri[3]:='H';  
 no[3]:='0..-3';nr[3]:='0..+1';
 s[4]:='H2 + S -----> H2S ';os[4]:='S';ri[4]:='H';  
 no[4]:='0..-2';nr[4]:='0..+1';
 s[5]:='S + O2 -----> SO2 ';os[5]:='O';ri[5]:='S';  
 no[5]:='0..-2';nr[5]:='0..+4';
 s[6]:='Zn + 2HCl -----> ZnCl2 + H2 ';os[6]:='H';ri[6]:='Zn'; 
 no[6]:='+1..0';nr[6]:='0..+2'; 
 s[7]:='Fe + CuSO4 -----> FeSO4 + Cu ';os[7]:='Cu';ri[7]:='Zn';  
 no[7]:='+2..0';nr[7]:='0..+2';
 s[8]:='Cu + AgNO3 -----> CuNO3 + Ag ';os[8]:='Ag';ri[8]:='Cu'; 
 no[8]:='+1..0';nr[8]:='0..+1'; 
 s[9]:='4Al + 3O2 -----> 2Al2O3 ';os[9]:='O';ri[9]:='Al'; 
 no[9]:='0..-2';nr[9]:='0..+3';
 s[10]:='C + O2 -----> CO2 ';os[10]:='O';ri[10]:='C';   
 no[10]:='0..-2';nr[10]:='0..+4';
 s[11]:='P + HNO3 + H2O ----> H3PO4 + NO ';os[11]:='N';ri[11]:='P';
 no[11]:='+5..+2';nr[11]:='0..+5';
 s[12]:='Cu + H2SO4 ---->CuSO4 + SO2 + H2O  ';os[12]:='S';ri[12]:='Cu';
 no[12]:='+6..+4';nr[12]:='0..+2';
  s[13]:='Cu + HNO3 ---->Cu(NO3)2 + NO + H2O  ';os[13]:='N';ri[13]:='Cu';
  no[13]:='+5..+2';nr[13]:='0..+2';
   s[14]:='Ag + HClO3 + HCl ---->AgCl + H2O  ';os[14]:='Cl';ri[14]:='Ag';
   no[14]:='+5..-1';nr[14]:='0..+1';
  s[15]:='FeCl2 + SnCl4 ---->FeCl3 + SnCl2  ';os[15]:='Sn';ri[15]:='Fe';
  no[15]:='+4..+2';nr[15]:='+2..+3';
   s[16]:='NH3 + O2 ---->NO + H2O  ';os[16]:='O';ri[16]:='N';
   no[16]:='0..-2';nr[16]:='-3..+2';
   s[17]:='KMnO4 + HCl ----> KCl + MnCl2 +Cl2 H2O ';os[17]:='Mn';ri[17]:='Cl';
   no[17]:='+7..+2';nr[17]:='-1..0';
   s[18]:='KBrO3 + HBr + FeBr2 ---->FeBr3 + KBr+H2O';os[18]:='Br';ri[18]:='Fe';
   no[18]:='+5..-1';nr[18]:='+2..+3';
   s[19]:='Cl2+NaOH ---->NaCl+NaClO+H2O  ';os[19]:='Cl';ri[19]:='Cl';
   no[19]:='0..-1';nr[19]:='0..+1';
    s[20]:='NaNO2+H2SO4 ---->NaHSO4+HNO3+NO+H2O  ';os[20]:='N';ri[20]:='N';
    no[20]:='+3..+2';nr[20]:='+3..+5';
    
end;
procedure test;
begin
dati;
 for a:=1 to b do
 begin
 writeln('reazione redox da esaminare ');
 writeln('si deve assegnare il numero di ossidazione ad ogni elemento');
 writeln('si deve quindi osservare elemento che si ossida ,riduce ');
 writeln('si devono scrivere i simboli dello elemento ossidante,riducente');
 writeln('---------------------------------------------------------------');
 writeln(s[a]);writeln;
 write('simbolo ossidante  =');readln(ox);
 write('simbolo riducente  =');readln(rd);
   if ox=os[a] then begin 
    writeln('esatto:ossidante=',ox);
    esatte:=esatte+1;end
   else begin writeln('errato:era ossidante=',os[a]);end;
   if rd=ri[a] then begin
   writeln('esatto:riducente=',rd);esatte:=esatte+1;end
   else writeln('errato:era riducente=',ri[a]);
   writeln;
   writeln('--------------------------------------------------');
   writeln('confronta i cambiamenti di numeri di ossidazione ');
   writeln('elemento ossidante  :',no[a]);
   writeln('elemento riducente  :',nr[a]);
   writeln('--------------------------------------------------');
   writeln('premi INVIO');readln;cancella;
 end;
 end;
 
begin
cancella;
repeat
write('indica numero di prove da eseguire <21 ');readln(b);
until b<21;
cancella;
test;
writeln('risultato prova');
errate:=2*b-esatte;
writeln('esatte=',esatte);
writeln('errate=',errate);
writeln('chiama insegnante per valutazione:spera in bene...');
writeln('poi premi INVIO');
readln;cancella;
end.