Foros del Web » Programación para mayores de 30 ;) » Programación General »

Q Pasa Con Esto??????urgente

Estas en el tema de Q Pasa Con Esto??????urgente en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/05/2004, 13:46
 
Fecha de Ingreso: abril-2004
Ubicación: badajoz
Mensajes: 11
Antigüedad: 20 años
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);

}
  #2 (permalink)  
Antiguo 08/05/2004, 21:53
 
Fecha de Ingreso: marzo-2004
Ubicación: Lerdo en Duragno Mexico
Mensajes: 27
Antigüedad: 20 años, 1 mes
Puntos: 0
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.

Última edición por wario64; 08/05/2004 a las 22:07
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:04.