<br><br><div class="gmail_quote">El 28 de febrero de 2012 22:50, jose omar leon luna <span dir="ltr"><<a href="mailto:gyakuza@gmail.com">gyakuza@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

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 <a href="mailto:gyakuza@gmail.com">gyakuza@gmail.com</a> po si no sale con el comentario:<br>


<br>
#include <stdio.h><br>
<br>
#include <stdlib.h><br>
<br>
#include <conio.h><br>
<br>
main(){<br>
<br>
/* Declaración del arreglo de tipo estructura perro */<br>
<br>
struct perro{<br>
<br>
char fecha[10];<br>
<br>
char raza[30];<br>
<br>
char color[50];<br>
<br>
char nombre[30];<br>
<br>
int edad;<br>
<br>
float peso;<br>
<br>
} perros[100];<br>
<br>
int c=0, op, clave;<br>
<br>
do{ /* Inicio del ciclo que imprime el menú*/<br>
<br>
printf( "\n----------------------------------------\n");<br>
<br>
printf( "\nRefugio para perros -Ladrido Feliz- \n");<br>
<br>
printf( "\n----------------------------------------\n");<br>
<br>
printf( "1) Registrar un perro \n");<br>
<br>
printf( "2) Buscar un perro \n");<br>
<br>
printf( "3) Salir \n");<br>
<br>
printf( "Elige una opci%cn:",162 );<br>
<br>
scanf("%d",&op);<br>
<br>
switch (op){<br>
<br>
case 1: /*Opción Registrar perro */<br>
<br>
printf( "\n------------------------------\n");<br>
<br>
if(c>=100) /* Verifica si hay espacio */<br>
<br>
printf("El refugio esta lleno\n");<br>
<br>
else{<br>
<br>
/*Si hay espacio pide los datos del perro y los guarda en el registro c del arreglo */<br>
<br>
printf( "Ingresa los datos del perro:");<br>
<br>
printf( "Clave:%.3d\n", &c);<br>
<br>
printf( "fecha de ingreso[dd/mm/aa]: ");<br>
<br>
scanf( "%s", perros[c].fecha);<br>
<br>
printf( "nombre: ");<br>
<br>
fflush(stdin);<br>
<br>
gets( perros[c].nombre);<br>
<br>
printf( "color: ");<br>
<br>
gets( perros[c].color);<br>
<br>
printf( "raza: ");<br>
<br>
gets( perros[c].raza);<br>
<br>
printf( "edad: ");<br>
<br>
scanf("%d" ,&perros[c].edad);<br>
<br>
printf( "peso: ");<br>
<br>
scanf("%f" ,&perros[c].peso);<br>
<br>
c++;<br>
<br>
}<br>
<br>
break;<br>
<br>
case 2: /* Opción buscar perro */<br>
<br>
printf( "\n-------------------------------\n");<br>
<br>
printf( "Clave: ");<br>
<br>
scanf("%d",&clave);<br>
<br>
/* verifica que la clave sea válida */<br>
<br>
while(clave>=100 || clave <0){<br>
<br>
/* Imprime los datos del perro correspondiente a la clave */<br>
<br>
printf( "nombre:%s\n",perros[clave].nombre);<br>
<br>
printf( "fecha de ingreso: %s\n", perros[clave].fecha);<br>
<br>
printf( "color: %s\n", perros[clave].color);<br>
<br>
printf( "raza: %s\n", perros[clave].raza);<br>
<br>
printf( "edad: %d a%cos\n", perros[clave].edad,164);<br>
<br>
printf( "peso: %.2f kilos\n", perros[clave].peso);<br>
<br>
}<br>
<br>
break;<br>
<br>
case 3: /* Caso salir, no hace nada */<br>
<br>
break;<br>
<br>
default: /* Caso opción inválida */<br>
<br>
printf( "Opcion no valida\n");<br>
<br>
}<br>
<br>
}while (op!=3); /* El ciclo do-while se repite mientras la opción no sea salir (3) */<br>
<br>
}<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br><br>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.<br>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.<br>

<br> <br>#include <stdio.h><br><br>#include <stdlib.h><br><br>//Existiendo tantas librerias portables por que esta!! solo funciona en windows,<br>//Y lo mejor es q no la usas.<br>//#include <conio.h><br>

<br>main(){<br><br>/* Declaración del arreglo de tipo estructura perro */<br><br>//Recomiendo declarar los struct fuera del main, para que puedan ser vistos por otras funciones<br>struct perro{<br><br>char fecha[10];<br>
<br>
char raza[30];<br><br>char color[50];<br><br>char nombre[30];<br><br>int edad;<br><br>float peso;<br><br>} perros[100];<br><br>int c=0, op, clave;<br><br>do{ /* Inicio del ciclo que imprime el menú*/<br><br>printf( "\n----------------------------------------\n");<br>

<br>printf( "\nRefugio para perros -Ladrido Feliz- \n");<br><br>printf( "\n----------------------------------------\n");<br><br>printf( "1) Registrar un perro \n");<br><br>printf( "2) Buscar un perro \n");<br>

<br>printf( "3) Salir \n");<br><br>printf( "Elige una opci%cn:",162 );<br><br>scanf("%d",&op);<br><br><br>switch (op){<br><br>  case 1: /*Opción Registrar perro */<br><br>    printf( "\n------------------------------\n");<br>

<br>    if(c>=100) /* Verifica si hay espacio */<br>      printf("El refugio esta lleno\n");<br><br>    else{<br><br>      /*Si hay espacio pide los datos del perro y los guarda en el registro c del arreglo */<br>

<br>      printf( "Ingresa los datos del perro:");<br><br>      //%d espera tipo int y no int*, lo que quiere decir es q le estas mandando un puntero donde no va<br>      printf( "Clave:%.3d\n", /*&c*/c);<br>

<br>      printf( "fecha de ingreso[dd/mm/aa]: ");<br><br>      scanf( "%s", perros[c].fecha); //Usa este para mi gusto (no acepta espacios, eso si jejeje)<br><br>      printf( "nombre: ");<br>

<br>      fflush(stdin);//Quieres limpiar el buffer? pero si luego...<br><br>      gets( perros[c].nombre); //Capturas lo que hay en el, osea nada.<br><br>      printf( "color: ");<br><br>      gets( perros[c].color);<br>

<br>      printf( "raza: ");<br><br>      gets( perros[c].raza);<br><br>      printf( "edad: ");<br><br>      scanf("%d" ,&perros[c].edad);<br><br>      printf( "peso: ");<br><br>

      scanf("%f" ,&perros[c].peso);<br><br>      c++;<br><br>    }<br><br>break;<br><br>  case 2: /* Opción buscar perro */<br><br>    printf( "\n-------------------------------\n");<br><br>    printf( "Clave: ");<br>

<br>    scanf("%d",&clave);<br><br>    /* verifica que la clave sea válida */<br><br>    //La condicion es terrible, primero que es un while, lo que ara es iniciar un ciclo,<br>    //osea MIENTRAS la condicion se repita, hace tal cosa. Bueno... pero tu quieres mostrar<br>

    //un solo perro y no varios.<br>    //Segundo mientras sea mayor a 100? no tienes mayores a cien ni tampoco menores a 0 :)<br>    //while(clave>=100 || clave <0){<br><br>    //Ademas te puede dar fallo de segmentacion si accedes a perros[100], ya que puedes acceder<br>

    //desde perror[0] a perros [99]. Yo cuando aprendi estas cosas lo hice con java.<br>    //Te recomiendo java por su simpleza, y por que "cada error te avisa", no es tan asi en c<br>    if (clave<100 || clave>=0) { <br>

      /* Imprime los datos del perro correspondiente a la clave */<br><br>      printf( "nombre:%s\n",perros[clave].nombre);<br><br>      printf( "fecha de ingreso: %s\n", perros[clave].fecha);<br><br>

      printf( "color: %s\n", perros[clave].color);<br><br>      printf( "raza: %s\n", perros[clave].raza);<br><br>      printf( "edad: %d a%cos\n", perros[clave].edad,164);<br><br>      printf( "peso: %.2f kilos\n", perros[clave].peso);<br>

<br>    }<br><br>break;<br><br>case 3: /* Caso salir, no hace nada */<br><br>break;<br><br>default: /* Caso opción inválida */<br><br>printf( "Opcion no valida\n");<br><br>}<br><br>}while (op!=3); /* El ciclo do-while se repite mientras la opción no sea salir (3) */<br>

<br>}<br>