Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Xgirl12 en 7 Abril 2013, 06:59 am



Título: Arreglos y estructuras en C. Ayuda.
Publicado por: Xgirl12 en 7 Abril 2013, 06:59 am
Hola de nuevo.

Tengo un pequeño problemita, digo pequeño porque ya es al final con while. Esté es el código que estoy utilizando y espero que me ayuden porque ya le hice unas cosas por las que tampoco corría, pero ya nada más me falta este detalle y pues no sé como hacerle. Espero sus comentarios y saludos a todos.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. main(){
  5. /* Declaración del arreglo de tipo estructura perro */
  6. struct perro{
  7. char fecha[10];
  8. char raza[30];
  9. char color[50];
  10. char nombre[30];
  11. int edad;
  12. float peso;
  13. } perros[100];
  14. int c=0, op, clave;
  15. do{ /* Inicio del ciclo que imprime el menú*/
  16. printf( "\n----------------------------------------\n");
  17. printf( "\n Refugio para perros -Ladrido Feliz- \n" );
  18. printf( "\n----------------------------------------\n");
  19. printf( "1) Registrar un perro \n" );
  20. printf( "2) Buscar un perro \n" );
  21. printf( "3) Salir \n" );
  22. printf( "Elige una opcion:",162 );
  23. scanf("%d",&op);
  24. switch (op){
  25. case 1: /*Opcion Registrar perro */
  26. printf( "\n------------------------------\n");
  27. if(c>=100) /* Verifica si hay espacio */
  28. printf("El refugio esta lleno\n");
  29. else{
  30. /*Si hay espacio pide los datos del perro y
  31.  Y los guarda en el registro c del arreglo */
  32. printf( "Ingresa los datos del perro:");
  33. printf( "Clave:%.3d\n", c);
  34. printf( "fecha de ingreso[dd/mm/aa]: ");
  35. scanf( "%s", perros[c].fecha);
  36. printf( "nombre: ");
  37. fflush(stdin);
  38. gets( perros[c].nombre);
  39. printf( "color: ");
  40. gets( perros[c].color);
  41. printf( "raza: ");
  42. gets( perros[c].raza);
  43. printf( "edad: ");
  44. scanf("%d" ,&perros[c].edad);
  45. printf( "peso: ");
  46. scanf("%f" ,&perros[c].peso);
  47. c++;
  48. }
  49. break;
  50. case 2: /* Opcion buscar perro */
  51. printf( "\n-------------------------------\n");
  52. printf( "Clave: ");
  53. scanf("%d",&clave);
  54. /* verifica que la clave sea válida */
  55. while(clave>=100 || clave <0){
  56. /* Imprime los datos del perro correspondiente
  57.  a la clave */
  58. printf("nombre:%s\n",perros[clave].nombre);
  59. printf( "fecha de ingreso: %s\n");
  60. perros[clave].fecha;
  61. printf( "color: %s\n", perros[clave].color);
  62. printf( "raza: %s\n", perros[clave].raza);
  63. printf( "edad: %d a%cos\n",
  64. perros[clave].edad,164);
  65. printf( "peso: %.2f kilos\n",
  66. perros[clave].peso);
  67. break;
  68. case 3: /* Caso salir, no hace nada */
  69. break;
  70. default: /* Caso opcion invalida */
  71. printf( "Opcion no valida\n");
  72. }
  73. }while (op!=3) /* El ciclo do-while se repite mientras la
  74.  opción no sea salir (3) */
  75. }




Título: Re: Arreglos y estructuras en C. Ayuda.
Publicado por: 85 en 7 Abril 2013, 16:11 pm
por queeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeé?

fijate lo que hice fue hacer que compile en mi PC, NADA más, porque tu código no compilaba.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. int main(){
  5.  
  6. /* Declaraci¨®n del arreglo de tipo estructura perro */
  7. struct perro{
  8. char fecha[10];
  9. char raza[30];
  10. char color[50];
  11. char nombre[30];
  12. int edad;
  13. float peso;
  14. } perros[100];
  15.  
  16. int c=0, op, clave;
  17.  
  18. do{ /* Inicio del ciclo que imprime el men¨²*/
  19.  
  20. printf( "\n----------------------------------------\n");
  21. printf( "\n Refugio para perros -Ladrido Feliz- \n" );
  22. printf( "\n----------------------------------------\n");
  23. printf( "1) Registrar un perro \n" );
  24. printf( "2) Buscar un perro \n" );
  25. printf( "3) Salir \n" );
  26. printf( "Elige una opcion:",162 );
  27. scanf("%d",&op);
  28. switch (op){
  29.  
  30. case 1: /*Opcion Registrar perro */
  31. printf( "\n------------------------------\n");
  32. if(c>=100) /* Verifica si hay espacio */
  33. printf("El refugio esta lleno\n");
  34. else{
  35. /*Si hay espacio pide los datos del perro y
  36. Y los guarda en el registro c del arreglo */
  37. printf( "Ingresa los datos del perro:");
  38. printf( "Clave:%.3d\n", c);
  39. printf( "fecha de ingreso[dd/mm/aa]: ");
  40. scanf( "%s", perros[c].fecha);
  41. printf( "nombre: ");
  42. fflush(stdin);
  43. gets( perros[c].nombre);
  44. printf( "color: ");
  45. gets( perros[c].color);
  46. printf( "raza: ");
  47. gets( perros[c].raza);
  48. printf( "edad: ");
  49. scanf("%d" ,&perros[c].edad);
  50. printf( "peso: ");
  51. scanf("%f" ,&perros[c].peso);
  52. c++;
  53. }
  54. break;
  55. case 2: /* Opcion buscar perro */
  56. printf( "\n-------------------------------\n");
  57. printf( "Clave: ");
  58. scanf("%d",&clave);
  59. /* verifica que la clave sea v¨¢lida */
  60. while(clave>=100 || clave <0){
  61. /* Imprime los datos del perro correspondiente
  62. a la clave */
  63. printf("nombre:%s\n",perros[clave].nombre);
  64. printf( "fecha de ingreso: %s\n");
  65. perros[clave].fecha;
  66. printf( "color: %s\n", perros[clave].color);
  67. printf( "raza: %s\n", perros[clave].raza);
  68. printf( "edad: %d a%cos\n",
  69. perros[clave].edad,164);
  70. printf( "peso: %.2f kilos\n",
  71. perros[clave].peso);
  72. }
  73. break;
  74. case 3: /* Caso salir, no hace nada */
  75. break;
  76. default: /* Caso opcion invalida */
  77. printf( "Opcion no valida\n");
  78. break;
  79. }
  80. }while (op!=3); /* El ciclo do-while se repite mientras la
  81. opci¨®n no sea salir (3) */
  82.  
  83. return 0;
  84. }
  85.  

por qué usan con IO ?

probá poner tu código en este compilador online, está en modo C
http://www.compileonline.com/compile_c_online.php

Saludos




Título: Re: Arreglos y estructuras en C. Ayuda.
Publicado por: durasno en 8 Abril 2013, 00:03 am
Citar
Tengo un pequeño problemita, digo pequeño porque ya es al final con while....
revisa los cierres de las llaves, tenes algunas mal y faltan... Esa forma de declarar la estructura creo q ya no se usa(raro q los hayas creado asi); ademas pasarlas a las funciones como parametro es bastante moleste. Te conviene crearlas de forma global


Saludos


Título: Re: Arreglos y estructuras en C. Ayuda.
Publicado por: Xgirl12 en 11 Abril 2013, 06:52 am
Gracias a ambos por sus consejos. Checando y les comento.


Título: Re: Arreglos y estructuras en C. Ayuda.
Publicado por: 85 en 12 Abril 2013, 02:09 am
La estructura te conviene hacerlo convencionalmente así:

Código:
struct perro{	
      char fecha[10];
      char raza[30];
      char color[50];
      char nombre[30];
      int edad;
      float peso;
};

int main()
{

     struct perro perros[100];
...

Es más profesional, así ves que separo lo que es un tipo de dato personalizado que debería ser global (aunque puede ser local), y lo separo de lo que es la declaración de una variable local o un conjunto de variables (un array en este caso) dentro de la función 'main'.
La variable es del tipo de tu estructura.


Título: Re: Arreglos y estructuras en C. Ayuda.
Publicado por: Xgirl12 en 12 Abril 2013, 06:23 am
Gracias 85 por contestar de nuevo. Si, se ve mejor como me dices. Entonces modifico unas cosas y comento que tal.

Saludos.