Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   Q Pasa Con Esto??????urgente (http://www.forosdelweb.com/f14/q-pasa-con-esto-urgente-201317/)

orni 08/05/2004 13:46

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

}

wario64 08/05/2004 21:53

Creo que un error no se si es el que te pasa pero es este:

Declaras las variables

int puntosvelocidad[1];
int puntosobediencia[1];
int puntosaspecto[1];

osea que cada una tiene 2 enteros

puntosvelocidad[0] y
puntosvelocidad[1]

y en todas las funciones dentro del for pides la varible puntosvelocidad[2] y como no existe por que no la declaraste toma valores de la memoria, valores basura.

solo cambia en el for x<=2 por x<2 y listo ese es el que vie haber si te sirve.


La zona horaria es GMT -6. Ahora son las 07:50.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.