Gestión de una Tabla de Jugadores en C: Implementación y Ejemplos
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,46 KB
Ejercicio C6
Estructura: 100 personas. Persona (id, nombre, puntos)
Función: Retorna el ID del jugador con más puntos.
Función: Retorna los puntos de un jugador a partir de su nombre. Si no está: -1
typedef struct {
int id;
char nombre[20];
int puntos;
} Persona;
typedef struct {
Persona personas[100];
int num;
} ListaPersonas;
Función MasPuntos
int MasPuntos(ListaPersonas *lista) {
int idMayor = 0;
int mayor = lista->personas[0].puntos;
int i = 1;
while (i < lista->num) {
if (lista->personas[i].puntos > mayor) {
idMayor = i;
mayor = lista->personas[i].puntos;
}
i = i + 1;
}
return idMayor;
}
Función DamePuntos
int DamePuntos(ListaPersonas *lista, char nombre[20]) {
int encontrado = 0;
int i = 0;
while ((i < lista->num) && encontrado == 0) {
if (strcmp(lista->personas[i].nombre, nombre) == 0) {
encontrado = 1;
} else {
i = i + 1;
}
}
if (encontrado == 1) {
return lista->personas[i].puntos;
} else {
return -1;
}
}
Función Main
Declara una lista de personas, escribe en la consola el jugador con más puntos.
Pregunta un nombre y escribe los puntos de ese jugador.
int main(int argc, char *argv[]) {
ListaPersonas miLista;
// ... (inicializar miLista)
int codMejor = MasPuntos(&miLista);
printf("El código del jugador con más puntos es: %d\n", codMejor);
printf("Dame el nombre de un jugador\n");
char nombre[20];
scanf("%s", nombre);
int puntos = DamePuntos(&miLista, nombre);
if (puntos != -1) {
printf("Los puntos del jugador son: %d\n", puntos);
} else {
printf("Ese jugador no está en la lista\n");
}
return 0;
}
Ejercicio 1: Lenguaje C
Estructura: Tabla de jugadores. Jugador: nombre y puntos (100). Indicación de si la entrada está libre o no.
Función: Coloca un jugador en la primera posición libre que encuentre en la tabla. Retorna: -1 si no hay posiciones libres. Retorna: Número de posición en la que se han almacenado los datos del jugador.
Función: Construye una cadena de caracteres con los nombres de los jugadores con más puntos que un parámetro dado. Los nombres se separan por comas.
Función Main
Declara: Tabla de jugadores, pide un jugador y lo coloca en la tabla.
Obtiene: Lista de nombres de jugadores con más de 10 puntos y escribe los nombres en la consola, un nombre en cada línea.
#include
#include
typedef struct {
int oc; // 0 indica que la entrada está libre y 1 que está ocupada
char nombre[30];
int puntos;
} TEntrada;
typedef TEntrada TablaJugadores[100];
Función Inicializar
void Inicializar(TablaJugadores tabla) {
int i;
for (i = 0; i < 100; i++) {
tabla[i].oc = 0;
}
}
Función PonJugador
int PonJugador(TablaJugadores tabla, char nombre[30], int puntos) {
int encontrado = 0;
int i = 0;
while ((i < 100) && !encontrado) {
if (tabla[i].oc == 0) {
encontrado = 1;
} else {
i = i + 1;
}
}
if (!encontrado) {
return -1;
} else {
tabla[i].puntos = puntos;
strcpy(tabla[i].nombre, nombre);
tabla[i].oc = 1;
return i;
}
}
Función DameNombres
void DameNombres(TablaJugadores tabla, int puntos, char resultado[100]) {
printf("Empezamos\n");
int i;
resultado[0] = '\0'; // Inicializar la cadena resultado como vacía
for (i = 0; i < 100; i++) {
if (tabla[i].oc == 1 && tabla[i].puntos > puntos) {
strcat(resultado, tabla[i].nombre);
strcat(resultado, ",");
}
}
}
Función Main
int main(int argc, char *argv[]) {
TablaJugadores miTabla;
Inicializar(miTabla);
int puntos;
char nombre[30];
printf("Escribe los datos de un jugador separados por un espacio\n");
scanf("%s %d", nombre, &puntos);
int id = PonJugador(miTabla, nombre, puntos);
if (id != -1) {
printf("Jugador añadido en la posición: %d\n", id);
} else {
printf("La tabla está llena\n");
}
char nombres[100] = "";
DameNombres(miTabla, 10, nombres);
if (strlen(nombres) > 0) {
printf("Nombres de jugadores con más de 10 puntos: %s\n", nombres);
} else {
printf("No hay jugadores con más de 10 puntos\n");
}
return 0;
}