hola bochos, espero que la vida los trate bien, me dan una mano con este código?
el problema dice así:
a)haciendo uso de estructuras implemente un tipo de dato que permita modelar un equipo de fútbol, del equipo interesa conocer: nombre, cantidad de partidos ganados, empatados, y perdidos, goles a favor y goles en contra y puntaje.
b)
implemente un código en c que de una función que permita calcular el puntaje de un equipo, el mismo se calcula en función de los partidos ganados(3 puntos), perdidos(0) y empatados(1), nota: se pretende que que la función a implementar reciba un equipo por referencia para setear su puntaje y que no devuelva nada.
c)
Escriba las lineas de código que permitan gestionar una liga de 40 equipos usando memoria estática debe generar la lista de 40 equipos e inicializarlos por teclado,toda la información para cada equipo se cargara por teclado, a excepción del puntaje que se calculara usando la función implementada.
mi código es el siguiente:
struct equipo
{
char nombre[20];
int resultados[3];
int goles[2];
int puntaje;
};
void puntaje(struct equipo* );
int main()
{
int j=0;
struct equipo datos[2];
struct equipo *punt;
for(j=0;j<2;j++)
{
printf("\ningrese nombre de equipo%d\n",j+1);
gets(datos[j].nombre);
fflush(stdin);
printf("ingrese los partidos ganados \n");
scanf("%d",&datos[j].resultados[j]);
fflush(stdin);
printf("ingrese los partidos empatados \n");
scanf("%d",&datos[j].resultados[j+1]);
fflush(stdin);
printf("ingrese los partidos perdidos\n");
scanf("%d",&datos[j].resultados[j+2]);
fflush(stdin);
printf("ingrese goles a favor\n");
scanf("%d",&datos[j].goles[j]);
fflush(stdin);
printf("ingrese goles en contra\n");
scanf("%d",&datos[j].goles[j+1]);
fflush(stdin);
punt=&datos[j];
puntaje(punt);
}
return 0;
}
void puntaje(struct equipo*p )
{
int i=0,puntos=0, num[3]={3,1,0};
for(i=0;i<3;i++)
{
puntos=puntos+(p->resultados[i])*num[i];
}
printf("\nel puntaje es %d",puntos);
return;
}
mi problema esta en la linea de código del inciso 3 b, la cuestión es que cuando quiero calcular el puntaje para cada equipo y llamo a la función,para luego utilizar la asignación punt=&datos[j], me calcula el puntaje para el primer partido, pero luego calcula cualquier cosa. Se supone que datos es un puntero a una variable de tipo struct equipo, luego guardo esa direccion en un puntero (punt), y luego aumento el indice para que recorra paquete de datos ( es decir los que voy inicializando), pero no se porque no funciona, graciass de antemanooo
para facilitar la carga de datos obviamente que no hice el programa con 40 equipos...
El problema lo tienes después de la primera iteración con las variables <resultados> y <goles> y eso es porque no puedes usar el índice <j> para controlar esos arrays ya que no coinciden los valores. Los arrays siempre son {0,1,2} y si usas el índice <j>; en la primera iteración estás usando correctamente {0,1,2} pero en la segunda estás usando {1,2,3} por lo que el índice 0 tiene basura y estás accediendo al 3 que está fuera del array.
perfecto graciass!! mañana rindo!, espero llegar a un 4, hoy le rezo a san judas tadeo :xD