PDA

Ver la versión completa : Programita en C



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.

Giskard
10-06-2005, 07:11
Para empezar es de mal gusto pedir que te "hagan la tarea".
En fin, debes fijarte en los errores que te da tu compilador, ahí encontrarás la mayoría de ellos, aqui van unos errores:

Cuando declaras y cuando programas las funciones debes especificar el tipo de valor que regresan (o retornan) y sus parámetros, por ejemplo:
int elegir(void); de la otra forma estas llamando a esa funcion en lugar de declararlas, lo cual de todas formas estaría mal porque no esta dentro del main

el scanf necesita como parámetro un apuntador, es decir que debes poner un & antes de la variable y esto es algo que se te pasó en una o dos instrucciones,

otra, el return no lleva paréntesis


char *s4[7]={"I","II","III","IV","V","VI","VII"}; ¿quien te dijo que así se hace? no le encuentro mucho sentido a esa declaración, cuando declaras un arreglo éste automáticamente ya es un apuntador, y al poner el * estas apuntando hacia un apuntador, por lo que los valores de "I","II",...no los "digiere" el compilador. Quita ese * y dejalo como char s4[7][LENGHT] por ejemplo, definiendo a LENGHT como el numero máximo de caracteres.

Debe haber más errores, los cuales no ví porque lo revisé rápidamente además de que es tu trabajo encontrarlos, sólo te dí unos ejemplos. Lo difícil en la programación es encontrar errores, lo demás es puro juego, ánimo.

Nero Angelo
26-08-2005, 00:50
Si tienes problemas con el C hay una web bastante buena dedicada casi exclusivamente a él: www.elrincondelc.com.

Espero ke te sea de utilidad :cool:

scanner
25-09-2005, 19:38
Si es por C, a lo mejor te puedo ayudar, pero de química ando cortito con sifón.