[C con Clase] ayuda en progrma
Ezequiel Hernan Di Giorgi
hernan.digiorgi en gmail.com
Mie Feb 29 12:02:26 CET 2012
El 28 de febrero de 2012 22:50, jose omar leon luna <gyakuza en gmail.com>escribió:
> podrian ayudarme tengo el siguiente codigo y me piden que lo compile y
> encientre los errores, corrija y describa como es que funciona pero no le
> encuentro como sobre todo cuando guarda los datos en el registro c del
> arreglo y en donde pide buscar al perro por la clave, podrian checarlo
> gracias, mi correo es gyakuza en gmail.com po si no sale con el comentario:
>
> #include <stdio.h>
>
> #include <stdlib.h>
>
> #include <conio.h>
>
> main(){
>
> /* Declaración del arreglo de tipo estructura perro */
>
> struct perro{
>
> char fecha[10];
>
> char raza[30];
>
> char color[50];
>
> char nombre[30];
>
> int edad;
>
> float peso;
>
> } perros[100];
>
> int c=0, op, clave;
>
> do{ /* Inicio del ciclo que imprime el menú*/
>
> printf( "\n----------------------------------------\n");
>
> printf( "\nRefugio para perros -Ladrido Feliz- \n");
>
> printf( "\n----------------------------------------\n");
>
> printf( "1) Registrar un perro \n");
>
> printf( "2) Buscar un perro \n");
>
> printf( "3) Salir \n");
>
> printf( "Elige una opci%cn:",162 );
>
> scanf("%d",&op);
>
> switch (op){
>
> case 1: /*Opción Registrar perro */
>
> printf( "\n------------------------------\n");
>
> if(c>=100) /* Verifica si hay espacio */
>
> printf("El refugio esta lleno\n");
>
> else{
>
> /*Si hay espacio pide los datos del perro y los guarda en el registro c
> del arreglo */
>
> printf( "Ingresa los datos del perro:");
>
> printf( "Clave:%.3d\n", &c);
>
> printf( "fecha de ingreso[dd/mm/aa]: ");
>
> scanf( "%s", perros[c].fecha);
>
> printf( "nombre: ");
>
> fflush(stdin);
>
> gets( perros[c].nombre);
>
> printf( "color: ");
>
> gets( perros[c].color);
>
> printf( "raza: ");
>
> gets( perros[c].raza);
>
> printf( "edad: ");
>
> scanf("%d" ,&perros[c].edad);
>
> printf( "peso: ");
>
> scanf("%f" ,&perros[c].peso);
>
> c++;
>
> }
>
> break;
>
> case 2: /* Opción buscar perro */
>
> printf( "\n-------------------------------\n");
>
> printf( "Clave: ");
>
> scanf("%d",&clave);
>
> /* verifica que la clave sea válida */
>
> while(clave>=100 || clave <0){
>
> /* Imprime los datos del perro correspondiente a la clave */
>
> printf( "nombre:%s\n",perros[clave].nombre);
>
> printf( "fecha de ingreso: %s\n", perros[clave].fecha);
>
> printf( "color: %s\n", perros[clave].color);
>
> printf( "raza: %s\n", perros[clave].raza);
>
> printf( "edad: %d a%cos\n", perros[clave].edad,164);
>
> printf( "peso: %.2f kilos\n", perros[clave].peso);
>
> }
>
> break;
>
> case 3: /* Caso salir, no hace nada */
>
> break;
>
> default: /* Caso opción inválida */
>
> printf( "Opcion no valida\n");
>
> }
>
> }while (op!=3); /* El ciclo do-while se repite mientras la opción no sea
> salir (3) */
>
> }
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
Hola amigo, CREO que arregle tu codigo, pero ahi esta... a mi no me da
errores, lo compile con el gcc, agrege un perrito y lo vi. Si sigue sin
funcionar avisame.
Ahaa, algo bonito seria que escribas con identacion, osea que no sea todo
en la misma linea. Yo identee a mano las partes que modifique. FIjate los
comentarios. BYE.
#include <stdio.h>
#include <stdlib.h>
//Existiendo tantas librerias portables por que esta!! solo funciona en
windows,
//Y lo mejor es q no la usas.
//#include <conio.h>
main(){
/* Declaración del arreglo de tipo estructura perro */
//Recomiendo declarar los struct fuera del main, para que puedan ser vistos
por otras funciones
struct perro{
char fecha[10];
char raza[30];
char color[50];
char nombre[30];
int edad;
float peso;
} perros[100];
int c=0, op, clave;
do{ /* Inicio del ciclo que imprime el menú*/
printf( "\n----------------------------------------\n");
printf( "\nRefugio para perros -Ladrido Feliz- \n");
printf( "\n----------------------------------------\n");
printf( "1) Registrar un perro \n");
printf( "2) Buscar un perro \n");
printf( "3) Salir \n");
printf( "Elige una opci%cn:",162 );
scanf("%d",&op);
switch (op){
case 1: /*Opción Registrar perro */
printf( "\n------------------------------\n");
if(c>=100) /* Verifica si hay espacio */
printf("El refugio esta lleno\n");
else{
/*Si hay espacio pide los datos del perro y los guarda en el registro
c del arreglo */
printf( "Ingresa los datos del perro:");
//%d espera tipo int y no int*, lo que quiere decir es q le estas
mandando un puntero donde no va
printf( "Clave:%.3d\n", /*&c*/c);
printf( "fecha de ingreso[dd/mm/aa]: ");
scanf( "%s", perros[c].fecha); //Usa este para mi gusto (no acepta
espacios, eso si jejeje)
printf( "nombre: ");
fflush(stdin);//Quieres limpiar el buffer? pero si luego...
gets( perros[c].nombre); //Capturas lo que hay en el, osea nada.
printf( "color: ");
gets( perros[c].color);
printf( "raza: ");
gets( perros[c].raza);
printf( "edad: ");
scanf("%d" ,&perros[c].edad);
printf( "peso: ");
scanf("%f" ,&perros[c].peso);
c++;
}
break;
case 2: /* Opción buscar perro */
printf( "\n-------------------------------\n");
printf( "Clave: ");
scanf("%d",&clave);
/* verifica que la clave sea válida */
//La condicion es terrible, primero que es un while, lo que ara es
iniciar un ciclo,
//osea MIENTRAS la condicion se repita, hace tal cosa. Bueno... pero tu
quieres mostrar
//un solo perro y no varios.
//Segundo mientras sea mayor a 100? no tienes mayores a cien ni tampoco
menores a 0 :)
//while(clave>=100 || clave <0){
//Ademas te puede dar fallo de segmentacion si accedes a perros[100],
ya que puedes acceder
//desde perror[0] a perros [99]. Yo cuando aprendi estas cosas lo hice
con java.
//Te recomiendo java por su simpleza, y por que "cada error te avisa",
no es tan asi en c
if (clave<100 || clave>=0) {
/* Imprime los datos del perro correspondiente a la clave */
printf( "nombre:%s\n",perros[clave].nombre);
printf( "fecha de ingreso: %s\n", perros[clave].fecha);
printf( "color: %s\n", perros[clave].color);
printf( "raza: %s\n", perros[clave].raza);
printf( "edad: %d a%cos\n", perros[clave].edad,164);
printf( "peso: %.2f kilos\n", perros[clave].peso);
}
break;
case 3: /* Caso salir, no hace nada */
break;
default: /* Caso opción inválida */
printf( "Opcion no valida\n");
}
}while (op!=3); /* El ciclo do-while se repite mientras la opción no sea
salir (3) */
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120229/059a9016/attachment.html>
Más información sobre la lista de distribución Cconclase