Arreglos y estructuras en C. Ayuda.

Iniciado por Xgirl12, 7 Abril 2013, 06:59 AM

0 Miembros y 1 Visitante están viendo este tema.

Xgirl12

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.

#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( "\n Refugio 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 opcion:",162 );
scanf("%d",&op);
switch (op){
case 1: /*Opcion 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
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: /* Opcion 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 opcion invalida */
printf( "Opcion no valida\n");
}
}while (op!=3) /* El ciclo do-while se repite mientras la
opción no sea salir (3) */
}




85

por queeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeé?

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

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int 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( "\n Refugio 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 opcion:",162 );
scanf("%d",&op);
switch (op){

case 1: /*Opcion 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
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: /* Opcion 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 opcion invalida */
printf( "Opcion no valida\n");
break;
}
}while (op!=3); /* El ciclo do-while se repite mientras la
opci¨®n no sea salir (3) */

return 0;
}


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


Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

durasno

CitarTengo 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
Ahorrate una pregunta, lee el man

Xgirl12

Gracias a ambos por sus consejos. Checando y les comento.

85

#4
La estructura te conviene hacerlo convencionalmente así:


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.
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

Xgirl12

Gracias 85 por contestar de nuevo. Si, se ve mejor como me dices. Entonces modifico unas cosas y comento que tal.

Saludos.