Retroceder   Foros del Web > Temas generales de computación > Programación

Respuesta
 
Herramientas Desplegado
Antiguo 08-may-2004, 13:46   #1 (permalink)
orni está en el buen camino
 
Fecha de Ingreso: abril-2004
Ubicación: badajoz
Mensajes: 11
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);

}
orni está desconectado   Responder Citando
Antiguo 08-may-2004, 21:53   #2 (permalink)
wario64 está en el buen camino
 
Fecha de Ingreso: marzo-2004
Ubicación: Lerdo en Duragno Mexico
Mensajes: 27
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-may-2004 a las 22:07.
wario64 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:00.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93