mesias
04-06-2005, 19:17
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","francio"},
{"berilio","magnesio","calcio","estroncio","bario","radio"},
{"boro","aluminio","galio","indio","talio",""},
{"carbono","silicio","germanio","estaño","plomo",""},
{"nitrogeno","fosforo","arsenico","antimonio","bismuto",""},
{"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.
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","francio"},
{"berilio","magnesio","calcio","estroncio","bario","radio"},
{"boro","aluminio","galio","indio","talio",""},
{"carbono","silicio","germanio","estaño","plomo",""},
{"nitrogeno","fosforo","arsenico","antimonio","bismuto",""},
{"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.