Test Foro de elhacker.net SMF 2.1

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.

#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) */
}



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 (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


Título: Re: Arreglos y estructuras en C. Ayuda.
Publicado por: durasno en 8 Abril 2013, 00:03 AM
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
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í:


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.