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
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*/
/*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
#include <stdio.h> #define N 30 #define M 25 #define JORNADAS 38 int iguales(char c1[M], char c2[M]); int buscar(char jugador[M], char nombres[N][M], int numElem); void main() { char nombres[N][M]; int goles[JORNADAS]; char letra; int fin; int i=1, j, k; //variables para ciclos FILE *archivo; while(fin != EOF) { for(j=0;j<goles[i];j++) { } i++; } } int iguales(char c1[M], char c2[M]) { int iguales, i = 0; while (c1[i] != '\0' && c2[i] != '0' && c1[i] == c2[i]) i++; iguales = (c1[i] == c2[i]); return iguales; } int buscar(char jugador[M], char nombres[N][M], int numElem) { }