Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2004, 13:46
orni
 
Fecha de Ingreso: abril-2004
Ubicación: badajoz
Mensajes: 11
Antigüedad: 20 años, 11 meses
Puntos: 0
Q Pasa Con Esto??????urgente

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);

}