Aquí te dejo un ejemplo de cómo podrías implementar la aplicación en C:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Estructura para representar un jugador
typedef struct {
int camiseta;
char posicion[10];
int tirosRealizados;
int zona;
int fueraZona;
int libres;
} Jugador;
// Función para cargar el puntaje final del equipo contrario
void cargarPuntajeFinal(int *puntajeFinal) {
printf("Ingrese el puntaje final del equipo contrario: ");
scanf("%d", puntajeFinal);
}
// Función para ingresar los datos de un jugador
void ingresarJugador(Jugador *jugador) {
printf("Ingrese la camiseta del jugador: ");
scanf("%d", &jugador->camiseta);
printf("Ingrese la posición del jugador (b, p, d): ");
scanf("%s", jugador->posicion);
printf("Ingrese los tiros realizados del jugador: ");
scanf("%d", &jugador->tirosRealizados);
printf("Ingrese los tiros en zona del jugador: ");
scanf("%d", &jugador->zona);
printf("Ingrese los tiros fuera de zona del jugador: ");
scanf("%d", &jugador->fueraZona);
printf("Ingrese los tiros libres del jugador: ");
scanf("%d", &jugador->libres);
}
// Función para evaluar el partido
void evaluarPartido(Jugador *jugadores, int tam, int *puntajeFinal) {
int puntajeTotal = 0;
int jugadoresPorPosicion[3] = {0, 0, 0};
// Contar jugadores por posición
for (int i = 0; i < tam; i++) {
if (strcmp(jugadores[i].posicion, "b") == 0) {
jugadoresPorPosicion[0]++;
} else if (strcmp(jugadores[i].posicion, "p") == 0) {
jugadoresPorPosicion[1]++;
} else if (strcmp(jugadores[i].posicion, "d") == 0) {
jugadoresPorPosicion[2]++;
}
}
// Calcular puntaje total del equipo argentino
for (int i = 0; i < tam; i++) {
puntajeTotal += 2 * jugadores[i].zona + 3 * jugadores[i].fueraZona + 1 * jugadores[i].libres;
}
// Mostrar el número de camiseta con mayor puntaje
int maxPuntaje = 0;
int camisetaMaxPuntaje = 0;
for (int i = 0; i < tam; i++) {
int puntaje = 2 * jugadores[i].zona + 3 * jugadores[i].fueraZona + 1 * jugadores[i].libres;
if (puntaje > maxPuntaje) {
maxPuntaje = puntaje;
camisetaMaxPuntaje = jugadores[i].camiseta;
}
}
// Mostrar si ganó o perdió
if (puntajeTotal > *puntajeFinal) {
printf("El equipo argentino ganó con un puntaje total de %d.\n", puntajeTotal);
} else if (puntajeTotal < *puntajeFinal) {
printf("El equipo argentino perdió con un puntaje total de %d.\n", puntajeTotal);
} else {
printf("El partido terminó empatado con un puntaje total de %d.\n", puntajeTotal);
}
printf("Jugadores por posición: b = %d, p = %d, d = %d\n", jugadoresPorPosicion[0], jugadoresPorPosicion[1], jugadoresPorPosicion[2]);
printf("Camiseta con mayor puntaje: %d\n", camisetaMaxPuntaje);
}
int main() {
int tam = 0;
int puntajeFinal;
Jugador *jugadores = NULL;
// Pedir el número de jugadores
printf("Ingrese el número de jugadores (hasta 50): ");
scanf("%d", &tam);
// Pedir el puntaje final del equipo contrario
cargarPuntajeFinal(&puntajeFinal);
// Pedir los datos de los jugadores
jugadores = (Jugador *)malloc(tam * sizeof(Jugador));
for (int i = 0; i < tam; i++) {
ingresarJugador(&jugadores[i]);
}
// Evaluar el partido
evaluarPartido(jugadores, tam, &puntajeFinal);
// Liberar memoria
free(jugadores);
return 0;
}
```
Este código define una estructura `Jugador` para representar a cada jugador, con campos para la camiseta, posición, tiros realizados, tiros en zona, tiros fuera de zona y tiros libres. La función `ingresarJugador` permite ingresar los datos de un jugador, y la función `evaluarPartido` calcula el puntaje total del equipo argentino, muestra el número de camiseta con mayor puntaje y determina si ganó o perdió.
En el `main`, se pide el número de jugadores, se carga el puntaje final del equipo contrario y se piden los datos de los jugadores. Luego, se evalúa el partido y se muestra el resultado. Finalmente, se libera la memoria asignada para los jugadores.