Hola a todos necesita alguien que me pueda ayudar a hacer o que me de un programa de formulación inorganica por que el curso se acaba y estoy jodidillo.(Ya se que igual lo que pido es demasiado pero necesito ayuda como sea)

Este el el codigo que llevo como vereis soy un chapucillas pero soy incapaz de terminarlo.

#include <conio.h>
#include <string.h>
elegir();
reconocerbin();
reconocerter();
void oxidos(struct obtenercadena);
void hidruros(struct obtenercadena);
void tp(struct obtenercadena);

struct obtenercadena
{
char comp[5];
char compconp[7];
int valencia;
};

main()
{
gotoxy(28,2);
printf("PROGRAMA DE FORMULACION");
gotoxy(31,4);
printf("Elija una opcion.\n");
gotoxy(28,8);
printf("<1>.Compuestos Binarios.\n");
gotoxy(28,10);
printf("<2>.Compuestos Terciarios.\n");
gotoxy(38,16);
printf("<_>");
gotoxy(39,16);
elegir();
getch();
}//main

elegir()
{
int funcion;

scanf("%d",&funcion);
switch (funcion)
{
case 1:
reconocerbin();
break;
case 2:
reconocerter();
break;
default:
printf("No existe ninguna opcion. Intentelo de nuevo.");
elegir();
break;
}//switch
return(0);
}//elegir

reconocerbin()
{
struct obtenercadena global;
clrscr( );

printf("Dame un compuesto:\n\a");
scanf("%s",global.comp);


if(global.comp[2]==111 || global.comp[2]==104)
{

if(global.comp[2]==111)
{
gotoxy(10,4);
printf("ES UN OXIDO:\n");
oxidos(global);
}//if
if(global.comp[2]==104)
{
gotoxy(10,4);
printf("ES UN HIDRURO:\n");
hidruros(global);
}//else
}
else
{
if(global.comp[3]==111)
{
gotoxy(10,4);
printf("ES UN OXIDO:\n");
oxidos(global);
}//if
if(global.comp[3]==104)
{
gotoxy(10,4);
printf("ES UN HIDRURO:\n");
hidruros(global);
}//else
}//else oxidos hidruros
return(0);
}//reconocerbin

reconocerter()
{
struct obtenercadena global;
clrscr( );

if(global.comp[2]==111 || global.comp[2]==104)
}
void oxidos(struct obtenercadena datos)
{

if(datos.comp[2]==111)
{
if(datos.comp[1]==50)
{
datos.valencia=datos.comp[3];
datos.valencia=datos.valencia-49;
gotoxy(10,6);
printf("Oxido de ");
tp(datos);
}//if valencia
else
{
printf("\nEs imposible porque la valencia del oxigeno es 2.");
}//else valencia
}//if oxido largo
else
{
if(datos.comp[2]==50)
{
datos.valencia=datos.comp[4];
datos.valencia=datos.valencia-48;
gotoxy(10,6);
printf("Oxido de ");
tp(datos);
}//if valencia
else
{
printf("\nEs imposible porque la valencia del oxigeno es 2.");
}//else valencia
}//else oxido corto
}

void hidruros(struct obtenercadena datos)
{
char *nometal[16]={"f","fl","br","i","at","o","s","se","te","n","p" ,"as","sb","c","si","b"};

if(datos.comp[2]==104)
{
if(datos.comp[1]==49)
{
datos.valencia=datos.comp[3];
datos.valencia=datos.valencia-48;
gotoxy(10,6);
printf("Hidruro de ");
tp(datos);
}//if valencia
else
{
printf("\nEs imposible porque la valencia del hidrogeno es 1.");
}//else valencia
}
else
{
if(datos.comp[2]==49)
{
datos.valencia=datos.comp[4];
datos.valencia=datos.valencia-48;
gotoxy(10,6);
printf("Hidruro de ");
tp(datos);
}//if valencia
else
{
printf("\nEs imposible porque la valencia del hidrogeno es 1.");
}//else valencia
}//else oxido corto
}
void tp(struct obtenercadena formular)
{
char ele[2];
int x,i,columna,fila;

ele[0]=formular.comp[0];
ele[1]=formular.comp[1];
ele[2]=NULL;

if(ele[1]==50 || ele[1]==49)
{ele[1]=NULL;}



char *s1[15][6]={
/*i x*/ {"li","na","k","rb","cs","fr"},
{"be","mg","ca","sr","ba","ra"},
{"b","al","ga","in","tl",""},
{"c","si","ge","sn","pb",""},
{"n","p","as","sb","bi",""},
{"o","s","se","te","po",""},
{"f","cl","br","i","at",""},
{"fe","co","ni","","",""},
{"zn","","","","",""},
{"cu","","","","",""},
{"ag","","","","",""},
{"au","","","","",""},
{"cd","","","","",""},
{"cr","","","","",""},
{"mn","","","","",""},
};
char *s2[15][6]= {
{"litio","sodio","potasio","rubidio","cesio","fran cio"},
{"berilio","magnesio","calcio","estroncio","bario" ,"radio"},
{"boro","aluminio","galio","indio","talio",""},
{"carbono","silicio","germanio","estaño","plomo"," "},
{"nitrogeno","fosforo","arsenico","antimonio","bis muto",""},
{"oxigeno","azufre","selenio","teluro","polonio"," "},
{"fluor","cloro","bromo","yodo","astato",""},
{"hierro","cobalto","niquel"},
{"zinc","","","","",""},
{"cobre","","","","",""},
{"plata","","","","",""},
{"oro","","","","",""},
{"cadmio","","","","",""},
{"cromo","","","","",""},
{"manganeso","","","","",""},
};

int s3[15][5]= {
{1},
{2},
{3},
{2,4},
{3,5},
{2,4,6},
{1,3,5,7},
{2,3},
{2},
{1,2},
{1},
{1,3},
{2},
{2,3,6},
{2,3,4,6,7},
};

for(i=0;i<15;i++)
for(x=0;x<6;x++)
if( strcmp(ele,s1[i][x]));
else{
printf("%s",s2[i][x]);
columna=i;
}

for(x=0;x<5;x++)
{
if(formular.valencia==s3[columna][x])
{
char *s4[7]={"I","II","III","IV","V","VI","VII"};
printf(" %s",s4[formular.valencia-1]);
}
}

}


MUCHISIMAS GRACIAS.