Título: [C] Problema con cadenas Publicado por: alvr en 9 Enero 2013, 19:38 pm Buenas, tengo un problema con una práctica que he de hacer, y no me sale por más que lo intento.
La idea sería esta: Citar Planteamiento general: Leer el fichero, creando los subvectores nombres y goles, además de obtener el número de jugadores que han marcado. Para ello: Iniciar variables Leer numero de goles (fin = fscanf…) Mientras no sea fin de fichero (fin!=EOF) Leer tantos nombres como numero de goles (for) fscanf (Fich, “%s”, jugador);/*dependerá de los identificadores declarados*/ y para cada nombre leído: Buscarlo en el vector de nombres Si ya existe ese nombre incrementar el numero de goles marcados por ese jugador en 1 Si no existe ese nombre, insertarlo al final del vector nombres y anotarle en el vector de goles el gol marcado (no olvidar incrementar numElem en 1) Leer numero de goles de la siguiente jornada Escribir resultados: Recorrer subvectores (for desde 0 hasta numElem-1) Escribir nombres y goles Y hay que utilizar al menos las siguientes funciones: Citar int iguales (char c1[M], char c2[M]); /*retorna 1 si las cadenas c1 y c2 son iguales y 0 en otro caso*/ int buscar (char jugador[M], char nombres [N][M], int numElem); /*busca el nombre jugador en el subarray de nombres, retornando la posición en la que lo encuentra, en caso de no encontrarlo retorna el valor numElem*/ En resumidas cuentas, se abre un fichero, en una cadena se guardan los goles y en otra los goleadores. Si un jugador ya había marcado un gol, sumarle otro. De momento este es el código que tengo: Código
Título: Re: [C] Problema con cadenas Publicado por: durasno en 9 Enero 2013, 21:41 pm Hola! te marco los errores que veo:
- Para guardar nombres del archivo en una matriz de caracteres tenes que hacer: Código - Los arreglos empiezan en la posicion cero, si vos inicializas i en 1 estas perdiendo una posicion - Si vas a hacer goles[i+1], no es mejor tener i++ antes del fscanf?? asi no haces i+1 - en la funcion iguales pusiste '0' te olvidaste la barra '\' Finalmente en la funcion buscar() tenes que usar la funcion iguales(suponiendo que esta bien), mas o menos seria: bucle que recorra todos los nombres llamar a la funcion iguales, pasarle jugador y nombres[ i ] si iguales retorna 1 entonces buscar debe retornar i de lo contrario numElem Apesar de que de decis que no te sale, no hiciste mucho. Trata de seguir haciendo con las modificaciones q te marque |