Nelek/programaQuimica
Publicado por Nelek/programaQuimica (5 intervenciones) el 05/12/2007 16:54:53
Hola Nelek. Muchas gracias por contestar. Mira te aclaro lo que me pasa, esque empecé con una filosofÃa y acabé con otra. Ahora tengo claro, según me han explicado, que tengo que usar programación modular (supongo que me entiendes, quiero decir usar varias funciones ( no hacerlo todo en main). Tampoco les gusta que gaste cosas que no he dado en clase. En clase he dado FILE* , fopen(archivo.txt), fscanf, fprintf, fgets, vectores de enteros, cadenas de caracteres, punteros (ejemplos int *p, int a=3; p=&a; *p=3), matrices multi-dimensionales (char matriz[a][b][c]....etc. ]Mira, te pongo el enunciado del ejercicio:
El alumno deberá implementar un programa que permita reconocer com-
puestos y determinar si están correctamente formulados. Para ello deberá soli-
citar una cadena e identificar los elementos, sus valencias y comprobar que la
reacción ha sido correctamente realizada.
El ejercicio se estructura en varios niveles que determinan la dificultad. Esto
no implica que se le deba proporcionar al programa información adicional (p.e,
indicar que es un óxido áacido).
1. Reconocimiento de óxidos áacidos y báasicos.
2. Reconocimiento de áacidos oxáacidos e hidruros.
3. El programa permite la introduccióon de los elementos sin necesidad de
especificar las valencias en el caso de que sean 1 (p.e. HClO).
4. El programa permite especificar elementos en cualquier orden (p.e. ClOH).
5. El programa permite introducir valencias para elementos entre paréntesis
(p.e. S(HO2)2 ).
Bueno, pues dicho esto, te explico por si no sabes de quÃmica. Para empezar, los elementos se combinan con fórmulas simbólicas y luego tienen un nombre. Cada elemento que se combina tiene un sÃmbolo, de una o dos letras en mi caso. "Na" es sodio, "N" es nitrógeno, etc.
Ésto básicamente te está diciendo que el programa tiene que reconocer la fórmula que tú le escribas como el nombre asignado que tiene. Para ello debe solicitar una cadena con el nombre del compuesto que quieres identificar (la fórmula) y decirte el nombre, su valencia y decirte si lo que tú le has dicho está bien o mal (como yo lo voy a comparar con los datos de un archivo, si no encuentra ninguna fórmula en el fichero igual a la que le he dado, estará mal formulado porque yo se las he dado todas.
1.CaracterÃsticas de óxidos ácidos y básicos: tienen dos elementos, y como cada elemento tiene sólo una letra mayúscula, el compuesto tiene dos letras mayúsculas. Además, una de ellas siempre es la letra O, que puede ir seguida de un número: si se combinan por ejemplo un nitrógeno con dos oxÃgenos, tendré NO2. Como ves, cuando uno de los elementos sólo aparece como uno, no se pone N1, se pone N.
Yo quiero, por ejemplo con un gets, que lea lo que yo escribo. Por ejemplo, NO2, que identifique dentro de la fórmula todo hasta llegar a la O (sin contarla) y ésta es la regla de formulación:
Si el último carácter antes de la O es un número, y el siguiente después de la O es otro, escribe Óxido de(esto va siempre) y luego busca en un fichero que he creado, el sÃmbolo N(sin contar números, o sea, si yo pongo N2O, sólo cuenta el N. Si pongo Na2O4, que cuente sólo Na. O sea, el primer/los dos primeros carácteres antes de la O o el número que haya antes de la O, en caso de que haya.)., y en el fichero eso, que habrán todos los sÃmbolos tal como te los he explicado (N, Na, etc) al lado separados con un espacio o con una coma, los nombres. Pues pondrá "Óxido de (el nombre que haya al lado del sÃmbolo) [y aquà irá ente paréntesis ( ), un numero, que se elige por el siguiente algoritmo. Si detrás del primer elemento como te he dicho, habÃa un número, y después del O también, pondrá el que está después del O. Si después del O no hay, multiplicará el que tiene el primer elemento por dos. Y si no hay numero en ninguno, entre paréntesis irá un 2.
El siguiente es básicamente lo mismo, aplicando otro algoritmo para poner los 'números'. Asà que si sé hacer el primero, supongo que sabré hacer el segundo. El tres también creo que lo sabré hacer. El cuarto es lo mismo, sólo que ahora al buscar el elemento tendrá que ser, para el caso 1 que son del tipo NaO, ahora podrán ser ONa, O2Na, O sea, que ya no podremos buscar los números como "el que va antes de la O", sino como "el que va después del elemento". Y el elemento será "la letra mayúscula y (si hay, las que vayan detrás y sin número(si hay)), que van antes o después de la O). Y para el caso 2, será lo mismo pero ahora "las que no son ni H ni O ni los posibles números que van detrás de H || O. EL 5 es lo mismo, pero poniendo un 1 multiplicado por el número a la derecha del paréntesis a todos los 1 de los elementos dentro del paréntesis) y luego calculando como si no hubiera parentesis.
Bueno, voy a intentar hacer algo. Si lo lees, porfavor intenta ayudarme en lo que puedas, que no me dejan volver a casa hasta que lo acabe, y a este paso hasta el sábado no podré ir. Yo también intento hacerlo, iré actualizando la página para ver si has puesto algo. Gracias. Ah, y si prefieres hablar por msn avisame (por aquÃ, no por privado, aunque me envÃes el msn por privado, avÃsame por aquÃ). Muchas gracias, esque estoy bastante desesperado, porque lo tengo que entregar el Lunes.
El alumno deberá implementar un programa que permita reconocer com-
puestos y determinar si están correctamente formulados. Para ello deberá soli-
citar una cadena e identificar los elementos, sus valencias y comprobar que la
reacción ha sido correctamente realizada.
El ejercicio se estructura en varios niveles que determinan la dificultad. Esto
no implica que se le deba proporcionar al programa información adicional (p.e,
indicar que es un óxido áacido).
1. Reconocimiento de óxidos áacidos y báasicos.
2. Reconocimiento de áacidos oxáacidos e hidruros.
3. El programa permite la introduccióon de los elementos sin necesidad de
especificar las valencias en el caso de que sean 1 (p.e. HClO).
4. El programa permite especificar elementos en cualquier orden (p.e. ClOH).
5. El programa permite introducir valencias para elementos entre paréntesis
(p.e. S(HO2)2 ).
Bueno, pues dicho esto, te explico por si no sabes de quÃmica. Para empezar, los elementos se combinan con fórmulas simbólicas y luego tienen un nombre. Cada elemento que se combina tiene un sÃmbolo, de una o dos letras en mi caso. "Na" es sodio, "N" es nitrógeno, etc.
Ésto básicamente te está diciendo que el programa tiene que reconocer la fórmula que tú le escribas como el nombre asignado que tiene. Para ello debe solicitar una cadena con el nombre del compuesto que quieres identificar (la fórmula) y decirte el nombre, su valencia y decirte si lo que tú le has dicho está bien o mal (como yo lo voy a comparar con los datos de un archivo, si no encuentra ninguna fórmula en el fichero igual a la que le he dado, estará mal formulado porque yo se las he dado todas.
1.CaracterÃsticas de óxidos ácidos y básicos: tienen dos elementos, y como cada elemento tiene sólo una letra mayúscula, el compuesto tiene dos letras mayúsculas. Además, una de ellas siempre es la letra O, que puede ir seguida de un número: si se combinan por ejemplo un nitrógeno con dos oxÃgenos, tendré NO2. Como ves, cuando uno de los elementos sólo aparece como uno, no se pone N1, se pone N.
Yo quiero, por ejemplo con un gets, que lea lo que yo escribo. Por ejemplo, NO2, que identifique dentro de la fórmula todo hasta llegar a la O (sin contarla) y ésta es la regla de formulación:
Si el último carácter antes de la O es un número, y el siguiente después de la O es otro, escribe Óxido de(esto va siempre) y luego busca en un fichero que he creado, el sÃmbolo N(sin contar números, o sea, si yo pongo N2O, sólo cuenta el N. Si pongo Na2O4, que cuente sólo Na. O sea, el primer/los dos primeros carácteres antes de la O o el número que haya antes de la O, en caso de que haya.)., y en el fichero eso, que habrán todos los sÃmbolos tal como te los he explicado (N, Na, etc) al lado separados con un espacio o con una coma, los nombres. Pues pondrá "Óxido de (el nombre que haya al lado del sÃmbolo) [y aquà irá ente paréntesis ( ), un numero, que se elige por el siguiente algoritmo. Si detrás del primer elemento como te he dicho, habÃa un número, y después del O también, pondrá el que está después del O. Si después del O no hay, multiplicará el que tiene el primer elemento por dos. Y si no hay numero en ninguno, entre paréntesis irá un 2.
El siguiente es básicamente lo mismo, aplicando otro algoritmo para poner los 'números'. Asà que si sé hacer el primero, supongo que sabré hacer el segundo. El tres también creo que lo sabré hacer. El cuarto es lo mismo, sólo que ahora al buscar el elemento tendrá que ser, para el caso 1 que son del tipo NaO, ahora podrán ser ONa, O2Na, O sea, que ya no podremos buscar los números como "el que va antes de la O", sino como "el que va después del elemento". Y el elemento será "la letra mayúscula y (si hay, las que vayan detrás y sin número(si hay)), que van antes o después de la O). Y para el caso 2, será lo mismo pero ahora "las que no son ni H ni O ni los posibles números que van detrás de H || O. EL 5 es lo mismo, pero poniendo un 1 multiplicado por el número a la derecha del paréntesis a todos los 1 de los elementos dentro del paréntesis) y luego calculando como si no hubiera parentesis.
Bueno, voy a intentar hacer algo. Si lo lees, porfavor intenta ayudarme en lo que puedas, que no me dejan volver a casa hasta que lo acabe, y a este paso hasta el sábado no podré ir. Yo también intento hacerlo, iré actualizando la página para ver si has puesto algo. Gracias. Ah, y si prefieres hablar por msn avisame (por aquÃ, no por privado, aunque me envÃes el msn por privado, avÃsame por aquÃ). Muchas gracias, esque estoy bastante desesperado, porque lo tengo que entregar el Lunes.
Valora esta pregunta


0