test su numeri ossidazione

esci chimicaturbo.htm

test su numeri di ossidazione

program OSSIDA;
(* determinazione numero ossidazione elementi composto INTERATTIVO *)
(* senza valutazione finale *)
uses crt;
const k1=64;

var n:array[1..k1] of string;
q:array[1..k1] of integer;
va:array[1..k1] of integer;
s,a,d,x,n1,n2,n3,h1,h2,h3,hy,v1,v2,h2y,h2f,totale,f,k:integer;
y,e1,e2,e3:string;
hx:real;
fx:array[1..40] of string[15];

procedure datiy;
begin
n[1]:='Li';va[1]:=1;q[1]:=1;
n[2]:='Na';va[2]:=1;q[2]:=1;
n[3]:='K';va[3]:=1;q[3]:=1;
n[4]:='Rb';va[4]:=1;q[4]:=1;
n[5]:='Cs';va[5]:=1;q[5]:=1;
n[6]:='Fr';va[6]:=1;q[6]:=1;
n[7]:='Be';va[7]:=2;q[7]:=1;
n[8]:='Mg';va[8]:=2;q[8]:=1;
n[9]:='Ca';va[9]:=2;q[9]:=1;
n[10]:='Sr';va[10]:=2;q[10]:=1;
n[11]:='Ba';va[11]:=2;q[11]:=1;
n[12]:='Ra';va[12]:=2;q[12]:=1;
n[13]:='Sc';va[13]:=3;q[13]:=1;
n[14]:='Y';va[14]:=3;q[14]:=1;
n[15]:='La';va[15]:=3;q[15]:=1;
n[16]:='Ac';va[16]:=3;q[16]:=1;
n[17]:='Zr';va[17]:=4;q[17]:=1;
n[18]:='Hf';va[18]:=4;q[18]:=1;
n[19]:='Ku';va[19]:=4;q[19]:=1;
n[20]:='Ta';va[20]:=5;q[20]:=1;
n[21]:='Ag';va[21]:=1;q[21]:=1;
n[22]:='Cd';va[22]:=2;q[22]:=1;
n[23]:='Zn';va[23]:=2;q[23]:=1;
n[24]:='Al';va[24]:=3;q[24]:=1;
n[25]:='Ga';va[25]:=3;q[25]:=1;
n[26]:='In';va[26]:=3;q[26]:=1;
n[27]:='Ti';va[27]:=3;q[27]:=2;
n[28]:='Ti';va[28]:=4;q[28]:=2;
n[29]:='V';va[29]:=2;q[29]:=2;
n[30]:='V';va[30]:=3;q[30]:=2;
n[31]:='Cr';va[31]:=2;q[31]:=2;
n[32]:='Cr';va[32]:=3;q[32]:=2;
n[33]:='Mo';va[33]:=2;q[33]:=2;
n[34]:='Mo';va[34]:=3;q[34]:=2;
n[35]:='Mn';va[35]:=2;q[35]:=2;
n[36]:='Mn';va[36]:=3;q[36]:=2;
n[37]:='Fe';va[37]:=2;q[37]:=2;
n[38]:='Fe';va[38]:=3;q[38]:=2;
n[39]:='Co';va[39]:=2;q[39]:=2;
n[40]:='Co';va[40]:=3;q[40]:=2;
n[41]:='Ni';va[41]:=2;q[41]:=2;
n[42]:='Ni';va[42]:=3;q[42]:=2;
n[43]:='Pd';va[43]:=2;q[43]:=2;
n[44]:='Pd';va[44]:=4;q[44]:=2;
n[45]:='Pt';va[45]:=2;q[45]:=2;
n[46]:='Pt';va[46]:=4;q[46]:=2;
n[47]:='Cu';va[47]:=1;q[47]:=2;
n[48]:='Cu';va[48]:=2;q[48]:=2;
n[49]:='Au';va[49]:=1;q[49]:=2;
n[50]:='Au';va[50]:=3;q[50]:=2;
n[51]:='Hg';va[51]:=1;q[51]:=2;
n[52]:='Hg';va[52]:=2;q[52]:=2;
n[53]:='Sn';va[53]:=2;q[53]:=2;
n[54]:='Sn';va[54]:=4;q[54]:=2;
n[55]:='Pb';va[55]:=2;q[55]:=2;
n[56]:='Pb';va[56]:=4;q[56]:=2;
n[57]:='Sb';va[57]:=3;q[57]:=2;
n[58]:='Bi';va[58]:=3;q[58]:=2;
n[59]:='Po';va[59]:=2;q[59]:=2;
n[60]:='Po';va[60]:=4;q[60]:=2;
n[61]:='Th';va[61]:=4;q[61]:=2;
n[62]:='Nd';va[62]:=3;q[62]:=2;
n[63]:='U';va[63]:=3;q[63]:=2;
n[64]:='Co';va[64]:=4;q[64]:=2;
end;


procedure formule;
begin
fx[1]:='HNO3';fx[2]:='HClO4';fx[3]:='H2SO4';fx[4]:='HClO2';
fx[5]:='H3PO4';fx[6]:='H2SO4';fx[7]:='H2CO3';fx[8]:='HClO';
fx[9]:='NaNO3';fx[10]:='K2SO3';fx[11]:='ZnSO4';fx[12]:='KNO2';
fx[13]:='NaClO4';fx[14]:='CaSO3';fx[15]:='KClO2';fx[16]:='CaCO3';
fx[17]:='SO3';fx[18]:='CO2';fx[19]:='SO2';fx[20]:='N2O5';
fx[21]:='CaCl2';fx[22]:='CaF2';fx[23]:='NaF';fx[24]:='BaCl2';
fx[25]:='KOH';fx[26]:='Ca(OH)2';fx[27]:='Mg(OH)2';fx[28]:='Al(OH)3';
fx[29]:='NaOH';
fx[30]:='HCl';fx[31]:='HF';fx[32]:='H2S';fx[33]:='HBr';fx[34]:='HI';
fx[35]:='SnO';fx[36]:='PbO2';fx[37]:='CaO';fx[38]:='MgO';
fx[39]:='Al2O3';fx[40]:='Fe2O3' ;

end;

procedure cancella;
begin;
clrscr;
end;


procedure fine;
begin
writeln('premi enter');
readln;
end;

procedure pausa;
begin
writeln('premi ENTER ');readln;
end;

procedure pro1;
begin
WRITELN('formula OSSIACIDO ');
for k:=1 to 8 do
writeln(fx[k]);
writeln('scrivi simboli elementi e loro indici o numero di atomi');
write('indice o numero atomi IDROGENO ');readln(n1);
write('simbolo non metallo ');readln(e2);
write('indice o numero atomi elemento ');readln(n2);
write('indice o numero atomi OSSIGENO ');readln(n3);
e1:='H';e3:='O';
h2:=n3*2-n1*1;
writeln('-----------------------------------------------------');
writeln('scrivi numeri ossidazione preceduti da segno + o - ');
writeln(e1,n1,e2,n2,e3,n3);
write('numero ossidazione di ',e1);readln(x);
if x=+1 then writeln('esatto ') else writeln('errato:era +1 ');
write('numero ossidazione di ',e2);readln(x);
if x=+h2 then writeln('esatto ') else writeln('errato:era +',h2);
write('numero ossidazione di ',e3);readln(x);
if x=-2 then writeln('esatto ') else writeln('errato:era -2 ');
end;


procedure pro2;
begin
writeln('formula IDROSSIDO ');
for k:=25 to 29 do
writeln(fx[k]);
writeln('scrivi simboli elementi e loro indici o numero di atomi');
write('simbolo elemento metallico ');readln(e1);
write('indice o numero atomi OSSIGENO ');readln(n2);
e2:='O';e3:='H';n1:=1;
h1:=n2;
writeln('-----------------------------------------------------');
writeln(e1,e2,n2,e3,n2);
writeln(e1,'(',e2,e3,')',n2);
writeln('scrivi numeri ossidazione preceduti da segno + o - ');
write('numero ossidazione di ',e1);readln(x);
if x=+h1 then writeln('esatto ') else writeln('errato:era +',h1);
write('numero ossidazione di ',e2);readln(x);
if x=-2 then writeln('esatto ') else writeln('errato:era -2 ');
write('numero ossidazione di ',e3);readln(x);
if x=+1 then writeln('esatto ') else writeln('errato:era +1 ');
end;


procedure pro3;
begin
writeln('formula IDRACIDO ');
for k:=30 to 34 do
writeln(fx[k]);
writeln('scrivi simboli elementi e loro indici o numero di atomi');
write('indice o numero atomi IDROGENO ');readln(n1);
write('simbolo radicale acido ');readln(e2);
e1:='H';
WRITELN('-----------------------------------------------------');
writeln('scrivi numeri ossidazione preceduti da segno + o - ');
writeln(e1,n1,e2);
write('numero ossidazione di ',e1);readln(x);
if x=+1 then writeln('esatto ') else writeln('errato:era +1 ');
write('numero ossidazione di ',e2);readln(x);
if x=-n1 then writeln('esatto ') else writeln('errato:era -',n1);
end;


procedure pro4;
begin
writeln('formula ANIDRIDE ');
for k:=17 to 20 do
writeln(fx[k]);
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 elemento ');readln(e1);
write('indice o numero atomi elemento ');readln(n1);
write('indice o numero atomi ossigeno ');readln(n2);
h1:=round(n2*2/n1);
WRITELN('-----------------------------------------------------');
writeln('scrivi numeri ossidazione preceduti da segno + o - ');
writeln(e1,n1,'0',n2);
write('numero ossidazione di ',e1);readln(x);
if x=+h1 then writeln('esatto ') else writeln('errato:era +',h1);
write('numero ossidazione di ','0');readln(x);
if x=-2 then writeln('esatto ') else writeln('errato:era -2');
end;


procedure pro5;
label salta2,salta;
begin
writeln('formula SALE binario ');
for k:=21 to 24 do
writeln(fx[k]);
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 h3:=2*n2 else h3:=n2;
h1:=round(h3/n1);
writeln('----------------------------------------------');
begin
writeln('scrivi numeri ossidazione preceduti da segno + o - ');
writeln(e1,n1,e2,n2);
write('numero ossidazione di ',e1);readln(x);
if x=+h1 then writeln('esatto ') else writeln('errato:era +',h1);
write('numero ossidazione di ',e2);readln(x);
if e2='S' then goto salta2 ;
if (x=-1) then writeln('esatto ') else writeln('errato:era -1');goto salta;
salta2:
if x=-2 then writeln('esatto ') else writeln('errato:era -2');
end;
salta:
end;

procedure pro6;
begin
writeln('formula SALI OSSIGENATI ');
for k:=9 to 16 do
writeln(fx[k]);
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 1 elemento ');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 2 elemento ');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('scrivi i numeri di ossidazione preceduti da segno + o - ');
writeln(e1,n1,e2,n2,e3,n3);
writeln(e1,n1,'(',e2,e3,n3/n2:0:0,')',n2);
write('elemento ',e1:8);readln(x);
if x=v1 then writeln('esatto:') else writeln('errato:era ',v1);
write('elemento ',e2:8);readln(x);
if x=h2f then writeln('esatto:') else writeln('errato:era ',h2f);
write('elemento ',e3:8);readln(x);
if x=-2 then writeln('esatto:') else writeln('errato:era ',-2);
end;

procedure pro7;
begin
writeln('formula OSSIDO BASICO ');
for k:=35 to 40 do
writeln(fx[k]);
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 elemento ');readln(e1);
write('indice o numero atomi elemento ');readln(n1);
write('indice o numero atomi ossigeno ');readln(n2);
h1:=round(n2*2/n1);
WRITELN('-----------------------------------------------------');
writeln('scrivi numeri ossidazione preceduti da segno + o - ');
writeln(e1,n1,'0',n2);
write('numero ossidazione di ',e1);readln(x);
if x=+h1 then writeln('esatto ') else writeln('errato:era +',h1);
write('numero ossidazione di ','0');readln(x);
if x=-2 then writeln('esatto ') else writeln('errato:era -2');
end;

procedure scelta;
var ancora:integer;
begin
cancella;
f:=0;
repeat
cancella;
f:=f+1;
(* write('formula da esaminare ');writeln(fx[f]);*)
writeln('---------------------------------------------------------');
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 ANIDRIDI..............N2O3...SO3 ');
writeln('5...composti binari come SALI di ALOGENI,ZOLFO.NaCl...CaS ');
WRITELN('6...composti ternari come SALI OSSIGENATI......CaSO4..NaNO3');
writeln('7...composti binari come OSSIDI BASICI.........CaO....Al2O3');
writeln('9...fine ');
write('opzione=');readln(s);
cancella;
case s of
1:pro1;
2:pro2;
3:pro3;
4:pro4;
5:pro5;
6:pro6;
7:pro7;
9:fine;

end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
until ancora=2;
fine;
end;


begin
cancella;
formule;
repeat
write('indica numero prove da eseguire <40 ');readln(totale);
until totale<40;
writeln('programma:richiesta assegnazione numeri ossidazione elementi');
writeln('---------------------------------------------------');
writeln('premi enter');readln;
scelta;
end.