C/Visual C - Buscar letras en una palabra

 
Vista:

Buscar letras en una palabra

Publicado por Preguntador (5 intervenciones) el 01/12/2007 17:51:37
Hola, soy nuevo aquí y tengo que decir que menuda gozada, una página que no te obliga a registrarte...(más que nada por el rollo del mensaje de confirmación de abrir el correo y todo eso).

Bueno, aquí va mi pregunta, a ver si me podéis ayudar. Estoy haciendo un programa en C que nombra los símbolos de compuestos en química y me gustaría saber cómo puedo hacer que teniendo una sílaba la busque en un archivo. Por ejemplo, tengo FeO, pues quiero buscar la palabra Fe en el archivo. Sólo eso, porque aunque no lo pongo, tenemos bastantes simplificaciones, como que sólo hay un tipo de compuestos, pocas valencias, etc. Pero lo de buscar no se me ocurre.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Buscar letras en una palabra

Publicado por Nelek (816 intervenciones) el 04/12/2007 09:46:28
Echa un vistazo a la funcion "fseek"

o bien vas leyendo el fichero e igualas lo leido al termino buscado (esto seria la opcion "burda" pero tambien efectiva)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Buscar letras en una palabra

Publicado por Preguntador (5 intervenciones) el 04/12/2007 19:11:46
Hola de nuevo, perdona por contestar tan tarde. Mira, tengo que entregar el trabajo el día 10, y justo ahora me pilla un puente que no puedo ir ni a tutorías ni nada porque mis profes se van por ahí. Y el lunes que vuelvo es cuando lo entrego, así que no tengo días para preguntar. Así que te pido (Nelek) o alguien que porfavor me ayude. Ayude no significa que me haga el trabajo, ni mucho menos, pero esque me hace mucha falta y necesito hacer algo como sea. Al menos para que no me pongan un cero. Pienso presentarme en Junio a la recuperación, pero el trabajo por lo menos cuenta hasta entonces y sólo se puede presentar ahora, así que me gustaría, aunque fuese a lo bestia, entregar algo. Y digo a lo bestia porque me vale incluso hacer un 'compara este texto con las mil, dos mil o cinco mil formulas del archivo hasta que encuentres algo. A ver, pongo lo que yo pondría.(encima algunas funciones ni me las han explicado, y luego se suponen dadas)

int main()
{
char formula[30],formulas_almacenadas[300]; int i, j, v[300]
printf("Dame una formula");
fflush(stdin);
gets(%s, &formula);
for(j=0, j=sizeof(formulas_almacenadas), j++)
for (i=0, i=sizeof(formula), i++)
if (formula[i]== /*AQUÍ IRÍA la primera letra/símbolo de cualquiera de las fórmulas, que previamente yo habría separado por un espacio.*/) {v[i]=v[i]++}
}
return 0;

Seguro que está plagado de errores sintáctico-semánticos, pero por lo menos veis que no soy un aprovechado, no fallo nunca a clase, presto atención e intento entender, pero esto no es fácil...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Buscar letras en una palabra

Publicado por Nelek (816 intervenciones) el 05/12/2007 11:03:54
si que se ve que lo estas intentando, pero lo que no logro es entender exactamente lo que quieres. En tu primer mensaje hablas de aislar unas letras (el nombre de un compuesto) de una serie de caracteres (formula quimica).
Ahora parece que intentes buscar la formula dentro de un conjunto de formulas.

En tu primer mensaje dices que usas un archivo, aqui usas un vector.

Voy a intentar ayudarte, pero para ello necesito que primero te aclares tu mismo y ordenes tus ideas. Define bien lo que necesitas y plantea una especie de pseudocodigo.

En cuanto al codigo que has puesto aqui...

por ahora, asi a simple vista, te digo que estas usando mal los "for"

el uso normal "for (int i = 0; i < N; i++)" significa, desde i = 0, mientras que sea menor que N, incrementa una unidad cada vez que ejecutes... (lo que hay dentro de las llaves)

Y tu lo que has puesto es: for (i=0, i=sizeof(formula), i++) que significa, desde I igual a 0, mientras i sea el tamanyo de una formula, incrementa una unidad cada vez que...
Que no tiene logica.

En segundo, que estructura esta siendo usada dentro del vector formulas_almacenadas? Como se separa una formula de la siguiente? (supongo que habra un espacion en blanco o una coma entre formula y formula, no?) Tienen todas el mismo tamanyo?

Lo dicho, (se que me repito, pero es lo mas importante de la programacion) aclara las ideas, define que es lo que quieres conseguir bien definido, intenta hacerte una idea global de como conseguirlo y luego especifica plasmando en codigo concreto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Buscar letras en una palabra

Publicado por Nelek (816 intervenciones) el 05/12/2007 11:07:00
Se me olvido... (aqui no hay opcion de edit)

Por si las moscas, escribe un nuevo mensaje en lugar de contestar a este y haz referencia a mi nick en el titulo paralelamente a tu pregunta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Buscar letras en una palabra

Publicado por preguntador (5 intervenciones) el 05/12/2007 20:36:36
Nolek, he puesto el ejercicio entero en el otro mensaje tal como has dicho. Llevo toda la tarde estudiando en unas páginas que me han dicho, y ya empiezo a entender las memorias dinámicas y el malloc :), incluso estoy dudando si presentarme al examen esta primera convocatoria, porque lo empiezo a entender bastante bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Buscar letras en una palabra

Publicado por Nelek (816 intervenciones) el 06/12/2007 09:58:17
Me alegro, si te he de ser sincero... yo no me presente a la primera convocatoria de C en la universidad. Y en la segunda estudie menos de una tarde y 3 horas que me explicaron en la manyana del propio examen. Con ello saque un 8.9 ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar