elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con estructuras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con estructuras  (Leído 8,071 veces)
eltoffer

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Ayuda con estructuras
« en: 5 Febrero 2011, 01:33 am »

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 :P

Código:
#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 Desconectado

Mensajes: 63


Ver Perfil
Re: Ayuda con estructuras
« Respuesta #1 en: 5 Febrero 2011, 02:47 am »

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 Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda con estructuras
« Respuesta #2 en: 5 Febrero 2011, 03:12 am »

bueno ya solucione la pate de las opciones ahora tengo porblema con la estructura

Código:
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 Desconectado

Mensajes: 63


Ver Perfil
Re: Ayuda con estructuras
« Respuesta #3 en: 5 Febrero 2011, 03:19 am »

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 Desconectado

Mensajes: 140


Ver Perfil
Re: Ayuda con estructuras
« Respuesta #4 en: 5 Febrero 2011, 04:01 am »

¿No deberías poner case  '1' (con apóstrofes)?
En línea

eltoffer

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda con estructuras
« Respuesta #5 en: 5 Febrero 2011, 04:53 am »

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 Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda con estructuras
« Respuesta #6 en: 5 Febrero 2011, 09:44 am »

Código
  1. #include<stdio.h>
  2.  
  3.  
  4. struct cliente {
  5. char rfc[15];
  6. char nom [30];
  7. char dir[60];
  8. char tel[11];
  9.       };
  10. struct cliente c1;
  11.  
  12. struct maquinaria {
  13. int num_maq;
  14. char mod[15];
  15. char desc [60];
  16. char fecha_com [15];
  17. char tipo[15];
  18.  };
  19. struct maquinaria m1;
  20.  
  21. struct renta {
  22. int num_rent;
  23. char fecha_rent[15];
  24. char period[20];
  25. char rfc [15];
  26. int num_maq;
  27. float total_rent;
  28.     };
  29. struct renta r1;
  30.  
  31. int opt,opt2;
  32.  
  33. void main (void)
  34. {
  35. do
  36. {
  37.  
  38. printf("Bienvenido al sistema de registro\n\n");
  39. printf("1.- Manejo de datos del cliente\n2.- Manejo de datos de la maquinaria\n3.- Control de rentas\n4.- Salida\n\nOpcion: ");
  40.        scanf("%d",&opt);
  41.        while(getchar() != '\n');
  42. switch(opt)
  43. {
  44.    case 1:
  45. do
  46. {
  47. printf("MANEJO DE DATOS DEL CLIENTE\n\n");
  48. 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:  ");
  49.  
  50. scanf("%d", &opt2);
  51. while(getchar() != '\n');
  52. switch(opt2)
  53. case 1:
  54. {
  55.  
  56. printf("ALTA DE CLIENTES\n\n");
  57. printf("RFC del cliente: ");
  58. gets(c1.rfc);
  59. printf("Nombre del cliente: ");
  60. gets(c1.nom);
  61. printf("Direccion: ");
  62. gets(c1.dir);
  63. printf("Telefono: ");
  64. gets(c1.tel);
  65. }
  66. break;
  67. case 2:
  68. printf("BAJAS DE CLIENTES\n\n");
  69. break;
  70. case 3:
  71. printf("CAMBIO DE DATOS DE CLIENTES");
  72. break;
  73. case 4:
  74. printf("CONSULTA DE TODOS LOS CLIENTES");
  75. break;
  76. case 5:
  77.  
  78. break;
  79. }
  80. while(opt != 5) ;
  81. }
  82. break;
  83.        }
  84. while (opt != 4);65
  85. }
  86.  
  87.  
  88.  
  89.  
  90.  


Probé el código, no hacía lo que debía al no limpiar el buffer.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Ayuda con estructuras
« Respuesta #7 en: 5 Febrero 2011, 15:50 pm »

Gets es de uso no recomendado:
Código
  1. gets (buffer);
  2.  
Peor que:
Código
  1. fgets (buffer, 1024, stdin);
  2.  

Lo del main, igual...
Código
  1. void main (void)
  2.  
Peor que:
Código
  1. int main ()
  2.  

Código
  1. while (opt != 4);65
  2.  
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 Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda con estructuras
« Respuesta #8 en: 5 Febrero 2011, 20:36 pm »


Peor que:
Código
  1. int main ()
  2.  
Y ese 65?


Preguntale a él, no es mi código.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Ayuda con estructuras
« Respuesta #9 en: 5 Febrero 2011, 20:58 pm »

Pero él no lo tiene en su código... XD
En línea

Te vendería mi talento por poder dormir tranquilo.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con estructuras
Programación C/C++
chechopineda 8 5,091 Último mensaje 16 Agosto 2010, 04:19 am
por chechopineda
Ayuda con las estructuras de los juegos
Ingeniería Inversa
j3xh0 3 3,227 Último mensaje 29 Agosto 2010, 00:20 am
por Castiblanco
Ayuda en estructuras como funcion
Programación C/C++
Kensei_G 1 2,057 Último mensaje 30 Mayo 2012, 19:35 pm
por durasno
Ayuda con estructuras
Programación C/C++
elle_hack 4 3,105 Último mensaje 12 Junio 2012, 07:15 am
por elle_hack
Ayuda con matriz dinámica de estructuras
Programación C/C++
darklatios2006 4 3,157 Último mensaje 21 Marzo 2013, 19:58 pm
por amchacon
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines