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:
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:
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:
#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;
archivo
= fopen("goles.txt", "r");
fin
= fscanf(archivo
, "%d", &goles
[i
]);
while(fin != EOF) {
for(j=0;j<goles[i];j++) {
fscanf(archivo
, "%s", nombres
);
}
fin
= fscanf(archivo
, "%d", &goles
[i
+1]);
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) {
}