| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
peta555
Registrado: 07 Jul 2014 Mensajes: 3
| Publicado: 07/07/2014 9:08 am | | | Título: estructura anidada |
| hola a todos. hace poco que he empezado un cursillo de c que encontre por internet. el curso explica una estructura anidada simple, mediante un ejemplo de un pequeño inventario de una tienda de musica. el programa pide para cada disco de musica las existencias en cd, cassette y disco, asi como los datos de los proveedores de ese disco. despues saca esos datos por pantalla. para un solo disco todo me funciona bien, pero el cursillo no explica como guardar los datos de varios discos a la vez.
he improvisado el siguiente codigo, que me va pidiendo los datos de 3 discos, pero despues solo me saca por pantalla los datos del primero que he introducido. haber si alguien me puede orientar donde puede estar el error y gracias de antemano:
| Código: | #include <stdio.h> #include <conio.h>
#define ALBUMES 3
struct estruc_existencias { int discos; int cintas; int cd; };
struct estruc_proveedor { char nombre_proveedor[40]; char telefono_proveedor[10]; char direccion_proveedor[100]; };
struct estruc_inventario { char autor[40]; char titulo[30]; struct estruc_existencias existencias; struct estruc_proveedor proveedor; };
int main() { struct estruc_existencias existencias[ALBUMES]; struct estruc_proveedor proveedor[ALBUMES]; struct estruc_inventario inventario[ALBUMES]; int i, j; /* introduccion de datos */ for( i=0; i<ALBUMES; i++ ) { printf("\nAutor: "); gets(inventario[i].autor); printf("Titulo: "); gets(inventario[i].titulo); printf("\nExistencias de discos: "); scanf("%d", &inventario[i].existencias.discos); printf("Existencias de cintas: "); scanf("%d", &inventario[i].existencias.cintas); printf("Existencias de cd: "); scanf("%d", &inventario[i].existencias.cd); while(getchar() != '\n'); /* vacia el buffer de entrada, ya que despues de usar SCANF, GETS da problemas */ printf("\nNombre del proveedor: "); gets(inventario[i].proveedor.nombre_proveedor); printf("Telefono del proveedor: "); gets(inventario[i].proveedor.telefono_proveedor); printf("Direccion del proveedor: "); gets(inventario[i].proveedor.direccion_proveedor); } /* presentacion de datos */ for( i=0; i<ALBUMES; i++ ) { printf("\n-----\nAutor: %s\n", inventario[i].autor); printf("Titulo: %s\n\n", inventario[i].titulo); printf("Existencias de discos: %i\n", inventario[i].existencias.discos); printf("Existencias de cintas: %i\n", inventario[i].existencias.cintas); printf("Existencias de cd: %i\n\n", inventario[i].existencias.cd); printf("Nombre del proveedor: %s\n", inventario[i].proveedor.nombre_proveedor); printf("Telefono del proveedor: %s\n", inventario[i].proveedor.telefono_proveedor); printf("Direccion del proveedor: %s\n\n", inventario[i].proveedor.direccion_proveedor); getch(); return 0; } }
|
|
| | Volver arriba | |  | vangodp
Registrado: 25 Ene 2014 Mensajes: 34
| Publicado: 09/07/2014 6:14 am | | | Título: |
| Saca el: getch(); y el return 0; de dentro del ultimo bucle for. El problema es que return hace que termine la funcion imediatamente aparte de retornar el 0.
por ejemplo si hago una funcion con 4 o 5 returns el se va detener al primer que encuentre aparte de devolvernos un valor.
| Código: | #include <stdio.h> #include <stdlib.h>
int calculo ( int a, int b , char op ) { if ( op == '+' ) { return a+b; } if ( op == '-' ) { return a-b; } if ( op == '*' ) { return a*b; } if ( op == '/' && b != 0 ) { //Si divido por cero obtengo un error asi que b nunca puede ser 0 return a/b; } printf("operacion no valida!\n"); return 0; }
int main () { int a = 30, b = 10; //sumamos printf ( "%d+%d=%d\n", a, b, calculo(a,b,'+') ); //restamos printf ( "%d-%d=%d\n", a, b, calculo(a,b,'-') ); //multiplicamos printf ( "%d*%d=%d\n", a, b, calculo(a,b,'*') ); //dividimos printf ( "%d/%d=%d\n", a, b, calculo(a,b,'/') ); //enviamos a para que de un error calculo ( 10, 20, 'a' ); getchar(); return 0; } |
Suerte  |
| | Volver arriba | |  | peta555
Registrado: 07 Jul 2014 Mensajes: 3
| Publicado: 10/07/2014 12:27 am | | | Título: |
| ese era el fallo. muchas gracias. valla fallo mas tonto. venga mirar y cambiar cosas y era eso. saludos  |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |