En un fichero tengo que guardar 10 perros con su nombre,raza, puntos que obtiene en velocidad, puntos que obtiene en obediencia y puntos que obtiene en aspecto. Tengo que hacer un programa que me pida el perro ganador, los puntos de todos y el perdedor. La segunda opción es la que me sale bien, y el ganador y el perdedor me dan mal. Me podríais ayudar????
Gracias
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct concursocanino
{
char nombredelanimal[25];
char raza[25];
int puntosvelocidad[1];
int puntosobediencia[1];
int puntosaspecto[1];
} a[10];
void ficherodeperros(struct concursocanino b[10]);
void menu(struct concursocanino b[10]);
void ganador(struct concursocanino b[10]);
void puntosdetodo(struct concursocanino b[10]);
void perdedor(struct concursocanino b[10]);
void main(void)
{
ficherodeperros(a);
menu(a);
}
void menu(struct concursocanino b[10])
{ int opcion;
do{
clrscr();
printf("(1)El animal gandor del concurso\n");
printf("(2)Puntos obtenidos por cada animal en velovidad,obedencia a las ¢denes y aspecto\n");
printf("(3)El animal con peor puntuaci¢n\n");
printf("(4)Salir\n");
scanf("%d",&opcion);
switch (opcion)
{
case 1:
ganador(b);
break;
case 2:
puntosdetodo(b);
break;
case 3:
perdedor(b);
break;
case 4:
exit(1);
break;
}
getch();
}while(opcion!=4);
}
void ficherodeperros(struct concursocanino b[10])
{
FILE *fich;
int f,p;
char nombredelanimal,raza;
fich=fopen("a:\\perros.txt","rt");
if(fich==NULL)
{
printf("error al abrir el fichero\n");
exit(1);
}
for(f=0;f<=9;f++)
{
fscanf(fich,"%s",b[f].nombredelanimal);
fscanf(fich,"%s",b[f].raza);
for(p=0;p<=2;p++)
fscanf(fich,"%d",&b[f].puntosvelocidad[p]);
fscanf(fich,"%d",&b[f].puntosobediencia[p]);
fscanf(fich,"%d",&b[f].puntosaspecto[p]);
}
fclose(fich);
}
void ganador(struct concursocanino b[10])
{
clrscr();
int f,p,suma=0,mayor=0,pmayor;
for(f=0;f<=9;f++)
{
for(p=0;p<=2;p++)
{
suma=suma+(b[f].puntosvelocidad[p]+b[f].puntosobediencia[p]+b[f].puntosaspecto[p]);
if (suma>mayor)
{
mayor=suma;
pmayor=f;
}
}
}
printf("El ganador es %s",b[pmayor].nombredelanimal);
}
void puntosdetodo(struct concursocanino b[10])
{
clrscr();
int p,f;
for(f=0;f<=9;f++)
{
printf("El perro %s\n",b[f].nombredelanimal);
printf("De raza %s\n",b[f].raza);
for(p=0;p<=2;p++)
{
printf("Los puntos que tiene son %d\n",b[f].puntosvelocidad[p],b[f].puntosobediencia[p],b[f].puntosaspecto[p]);
}
}
}
void perdedor(struct concursocanino b[10])
{
clrscr();
int f,p,suma=0,menor=0,pmenor;
for(f=0;f<=9;f++)
{
for(p=0;p<=2;p++)
{
suma=suma+(b[f].puntosvelocidad[p]+b[f].puntosobediencia[p]+b[f].puntosaspecto[p]);
if (menor>suma)
{
menor=suma;
pmenor=f;
}
}
}
printf("El perdedor es %s",b[pmenor].nombredelanimal);
}