![]() |
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); } |
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.