Autor
|
Tema: Ayuda con estructuras (Leído 8,071 veces)
|
eltoffer
Desconectado
Mensajes: 9
|
Bueno tengo un problema tengo que hacer un menu con diferentes opciones y estructuras, el asunto lo tengo claro y puedo hacerlo solo que me esta rompiendo la cabeza el uso de: scanf("%d",&opt) opt=getch(); opt=getche(); opt=getchar(); por que lo digo???? porque cuando me muestra el menu no me respeta la opcion deseada o se la brinca o no hace nada a ver si me echan una mano este es mi codigo (parcial) solo necesito que me digan como le hago para que me valga las opciones con esa base del cogido qu.e tengo, no me gustaria cambiar mucho codigo, creo que no esta TAN TAN mal #include<stdio.h> #include<conio.h>
struct cliente { char rfc[15]; char nom [30]; char dir[60]; char tel[11]; }; struct cliente c1;
struct maquinaria { int num_maq; char mod[15]; char desc [60]; char fecha_com [15]; char tipo[15]; }; struct maquinaria m1;
struct renta { int num_rent; char fecha_rent[15]; char period[20]; char rfc [15]; int num_maq; float total_rent; }; struct renta r1;
int opt,opt2;
void main (void) { do { clrscr(); printf("Bienvenido al sistema de registro\n\n"); printf("1.- Manejo de datos del cliente\n2.- Manejo de datos de la maquinaria\n3.- Control de rentas\n4.- Salida\n\nOpcion: "); [color=red][b] scanf("%d",&opt); switch(opt)[/b][/color] case 1: { do { clrscr(); printf("MANEJO DE DATOS DEL CLIENTE\n\n"); printf("1.- Altas de clientes\n2.- Bajas de clientes\n3.- Cambio de datos de clientes\n4.- Consulta de todo los clientes\n5.- Regresar al menu principal\n\nOpcion: "); [color=red][b]opt2=get(); switch(opt2)[/b][/color] case 1: { clrscr(); printf("ALTA DE CLIENTES\n\n"); printf("RFC del cliente: "); gets(c1.rfc); printf("Nombre del cliente: "); gets(c1.nom); printf("Direccion: "); gets(c1.dir); printf("Telefono: "); gets(c1.tel); } break; case 2: clrscr(); printf("BAJAS DE CLIENTES\n\n"); break; case 3: clrscr(); printf("CAMBIO DE DATOS DE CLIENTES"); break; case 4: clrscr(); printf("CONSULTA DE TODOS LOS CLIENTES"); break; case 5: clrscr(); break; } while(opt != 5) ; } break; } while (opt != 4); getch(); } que tengo mal???
|
|
|
En línea
|
|
|
|
negux
Desconectado
Mensajes: 63
|
aparte de que debe de ser int main y el return 0, no se recomienda el uso de conio.h creo que se debe al uso del gets, por que en los printf usas \n y eso te lo lee el gets, usa scanf para leer opt2, algo que hice asi rapido pero no es recomendable es el uso de fflush(stdin); antes de cada gets :S
|
|
|
En línea
|
|
|
|
eltoffer
Desconectado
Mensajes: 9
|
bueno ya solucione la pate de las opciones ahora tengo porblema con la estructura clrscr(); printf("MANEJO DE DATOS DEL CLIENTE\n\n"); printf("1.- Altas de clientes\n2.- Bajas de clientes\n3.- Cambio de datos de clientes\n4.- Consulta de todo los clientes\n5.- Regresar al menu principal\n\nOpcion: "); scanf("%d", &opt2); switch(opt2) { case 1: { clrscr(); printf("ALTA DE CLIENTES\n\n"); printf("RFC del cliente: "); gets(c1.rfc); printf("Nombre del cliente: "); gets(c1.nom); printf("Direccion: "); gets(c1.dir); printf("Telefono: "); gets(c1.tel); break; } en esta parte si escogo 1 me muetra este menu pero en la aprte donde me pediria el RFC no puedo introducir ningun caracter porque me pasa a la siguiente opcion osea NOMBRE y ahi si ya puedo escribir, el rpoblema solo es en el RFC, tengo duda de si se puede usar el gets porque es una variable de tipo entero y no cadena de caracteres, pienso que ese es el problema, pero no se, acabo de aprnder esto de las estructuras
|
|
|
En línea
|
|
|
|
negux
Desconectado
Mensajes: 63
|
quien es una variable de tipo entero, RFC es caracter, te repito es por el gets y el salto de linea antes, puedes usar fflush(stdin); antes de cada gets, claro que no es recomendablee
|
|
|
En línea
|
|
|
|
Tokes
Desconectado
Mensajes: 140
|
¿No deberías poner case '1' (con apóstrofes)?
|
|
|
En línea
|
|
|
|
eltoffer
Desconectado
Mensajes: 9
|
es cierto me confundi, si es una cadena de caracteres
pero ya probe quitando los saltos de linea y aun asi no me toma en cuenta elo RFC :S que sera????
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
#include<stdio.h> struct cliente { char rfc[15]; char nom [30]; char dir[60]; char tel[11]; }; struct cliente c1; struct maquinaria { int num_maq; char mod[15]; char desc [60]; char fecha_com [15]; char tipo[15]; }; struct maquinaria m1; struct renta { int num_rent; char fecha_rent[15]; char period[20]; char rfc [15]; int num_maq; float total_rent; }; struct renta r1; int opt,opt2; void main (void) { do { printf("Bienvenido al sistema de registro\n\n"); printf("1.- Manejo de datos del cliente\n2.- Manejo de datos de la maquinaria\n3.- Control de rentas\n4.- Salida\n\nOpcion: "); switch(opt) { case 1: do { printf("MANEJO DE DATOS DEL CLIENTE\n\n"); printf("1.- Altas de clientes\n2.- Bajas de clientes\n3.- Cambio de datos de clientes\n4.- Consulta de todo los clientes\n5.- Regresar al menu principal\n\nOpcion: "); switch(opt2) case 1: { printf("ALTA DE CLIENTES\n\n"); printf("Nombre del cliente: "); } break; case 2: printf("BAJAS DE CLIENTES\n\n"); break; case 3: printf("CAMBIO DE DATOS DE CLIENTES"); break; case 4: printf("CONSULTA DE TODOS LOS CLIENTES"); break; case 5: break; } while(opt != 5) ; } break; } while (opt != 4);65 }
Probé el código, no hacía lo que debía al no limpiar el buffer.
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Gets es de uso no recomendado:
Peor que: fgets (buffer , 1024, stdin );
Lo del main, igual... void main (void)
Peor que: int main ()
Y ese 65? Mmm, el resto del code tiene sus fallillos también, luego lo reescribo, es que ahora mismitoooo... Suerte!
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Peor que: int main ()
Y ese 65? Preguntale a él, no es mi código.
|
|
|
En línea
|
|
|
|
Shell Root
|
Pero él no lo tiene en su código... XD
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con estructuras
Programación C/C++
|
chechopineda
|
8
|
5,091
|
16 Agosto 2010, 04:19 am
por chechopineda
|
|
|
Ayuda con las estructuras de los juegos
Ingeniería Inversa
|
j3xh0
|
3
|
3,227
|
29 Agosto 2010, 00:20 am
por Castiblanco
|
|
|
Ayuda en estructuras como funcion
Programación C/C++
|
Kensei_G
|
1
|
2,057
|
30 Mayo 2012, 19:35 pm
por durasno
|
|
|
Ayuda con estructuras
Programación C/C++
|
elle_hack
|
4
|
3,105
|
12 Junio 2012, 07:15 am
por elle_hack
|
|
|
Ayuda con matriz dinámica de estructuras
Programación C/C++
|
darklatios2006
|
4
|
3,157
|
21 Marzo 2013, 19:58 pm
por amchacon
|
|