Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: General Dmitry Vergadoski en 5 Julio 2012, 15:20 pm



Título: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 15:20 pm
hola a todos necesito de su ayuda aqui esta el codigo de mi menu en c pero no me sirve:

Código
  1. #include <stdio.h>
  2.  
  3. main ()
  4. {  int op;
  5.   repeat
  6.   printf ( "MENU" );
  7.   printf ( "" );
  8.   printf ( "Opcion (1)" );
  9.   printf ( "Opcion (2)" );
  10.   printf ( "Opcion (3)" );
  11.   printf ( "Opcion (4)" );
  12.   printf ( "" );
  13.   scanf("",&op)  ;
  14.      if ( op == 1 )
  15.   {
  16.      programa1 ;
  17.   }
  18.   if ( op == 2 )
  19.   {
  20.      programa2 ;
  21.   }
  22.   if ( op == 3 )
  23.   {
  24.      programa3 ;
  25.   }
  26.   if ( op == 4 )
  27.   {
  28.      programa4 ;
  29.   }
  30.   until 2 == 3 ;
  31. }


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 15:22 pm
En la función scanf(); te queda poner el %d entre las comillas. Así:


Código
  1. scanf("%d",&op);
Saludos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 15:41 pm
gracias pero me sigue marcando los sig. errores:

-parse error before printf

-programa1 underclared

-programa2 underclared

-programa3 underclared

-programa4 underclared

-until undeclared

-parse error before 2


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 15:46 pm
"repeat... until" en C no existe. Creo que lo que quieres hacer con eso es un do-while.

Lo de "programa 1"... ¿Qué quieres hacer con eso? Es que no le encuentro sentido...

Eso respecto a los errores. Después, he visto que pones dos veces:

Código
  1. printf ( "" );

Eso no imprime nada, no sé por qué lo quieres poner... Supongo que lo que quieres es hacer un salto de línea. Si es así, debes poner:

Código
  1. printf ( "\n" );

Saludos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 15:50 pm
lo acomode como dijiste y me sigue apareciendo los mismos errores:
Código
  1. #include <stdio.h>
  2.  
  3. main ()
  4. {  int op;
  5.   do
  6.   printf ( "MENU" );
  7.   printf ( "\n" );
  8.   printf ( "Opcion (1)" );
  9.   printf ( "Opcion (2)" );
  10.   printf ( "Opcion (3)" );
  11.   printf ( "Opcion (4)" );
  12.  printf ( "\n" );
  13.   scanf("%d",&op)  ;
  14.      if ( op == 1 )
  15.   {
  16.      programa1 ;
  17.      printf ( "hello world1" );
  18.   }
  19.   if ( op == 2 )
  20.   {
  21.      programa2 ;
  22.      printf ( "hello world2" );
  23.   }
  24.   if ( op == 3 )
  25.   {
  26.      programa3 ;
  27.      printf ( "hello world3" );
  28.   }
  29.   if ( op == 4 )
  30.   {
  31.      programa4 ;
  32.      printf ( "hello world4" );
  33.   }
  34.   while 2 == 3 ;
  35. }


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 15:56 pm
Los errores aparecen porque la sintaxis de do-while no es así. Ahora te dejo el código de cómo sería.

A parte, ¿qué quieres hacer con "programa1", "programa2"...?

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4.  
  5. {
  6.    int op;
  7.   do
  8.   {
  9.   printf ( "MENU: \n" );
  10.   printf ( "Opcion (1)\n" );
  11.   printf ( "Opcion (2)\n" );
  12.   printf ( "Opcion (3)\n" );
  13.   printf ( "Opcion (4)\n" );
  14.   scanf("%d",&op)  ;
  15.      if ( op == 1 )
  16.      {
  17.      printf("Hola Mundo 1\n");
  18.      }
  19.     if ( op == 2 )
  20.     {
  21.      printf("Hola Mundo 2\n");
  22.     }
  23.     if ( op == 3 )
  24.     {
  25.      printf("Hola Mundo 3\n");
  26.     }
  27.     if ( op == 4 )
  28.     {
  29.      printf("Hola Mundo 4\n");
  30.     }
  31.   }while(/*PON AQUÍ LA CONDICIÓN*/);
  32.  
  33.   return 0;
  34. }
  35.  


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 16:19 pm
gracias amigo me ayudaste, pero tengo una duda en C existen "procedures" como en Pascal ?


Título: Re: ayuda con menu en c
Publicado por: 0xDani en 5 Julio 2012, 16:23 pm
Cogete un buen libro de C o C++ y pregunta dudas coherentes, lo que no puedes hacer es llegar con un codigo hibrido entre C y pascal o algo asi, y decir que porque no funciona.

Saludos.


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 16:24 pm
Sí, existen en C, solo que se llaman funciones.

Saludos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 16:52 pm
como puedo implementar entonces esas funciones tipo procedures en mi codigo para que me devuelva al menu principal:

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4.  
  5. {
  6.   int op;
  7.   do
  8.   {
  9.   system("cls");
  10.   printf ( "MENU: \n" );
  11.   printf ( "Opcion (1)\n" );
  12.   printf ( "Opcion (2)\n" );
  13.   printf ( "Opcion (3)\n" );
  14.   printf ( "Opcion (4)\n" );
  15.   scanf("%d",&op)  ;
  16.      if ( op == 1 )
  17.      {
  18.      system("cls");
  19.      printf("Hola Mundo 1\n");
  20.      system("pause");
  21.  
  22.      }
  23.     if ( op == 2 )
  24.     {
  25.      system("cls");
  26.      printf("Hola Mundo 2\n");
  27.      system("pause");
  28.     }
  29.     if ( op == 3 )
  30.     {
  31.      system("cls");
  32.      printf("Hola Mundo 3\n");
  33.      system("pause");
  34.     }
  35.     if ( op == 4 )
  36.     {
  37.      system("cls");
  38.      printf("Hola Mundo 4\n");
  39.      system("pause");
  40.     }
  41.   }
  42.   while(2 == 3);
  43.  
  44. }
  45.  


Título: Re: ayuda con menu en c
Publicado por: 0xDani en 5 Julio 2012, 17:02 pm
Si en la condicion del while le pones 2==3 solo se va a ejecutar una vez, ponle op<1 || op<4 para asegurarte de que se escoge una opcion entre 1 y 4. Y cogete un libro de C o C++.

Saludos.


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 17:07 pm
Eso que has hecho ahora no te va a compilar, ya que system(); se encuentra en stdlib.h

Igual, aunque incluyas esa librería, no te recomiendo que lo uses... (y mucho menos tantas veces como aparece en tu código!). Aquí una explicación de por qué es malo y posibles soluciones:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Como dice daniyo, también te recomiendo que cojas un buen libro de C.

Saludos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 17:30 pm
Si en la condicion del while le pones 2==3 solo se va a ejecutar una vez, ponle op<1 || op<4 para asegurarte de que se escoge una opcion entre 1 y 4. Y cogete un libro de C o C++.

Saludos.

estas equivocado lo del 2==3 es un bucle infinito para que el programa no se cierre.

Eso que has hecho ahora no te va a compilar, ya que system(); se encuentra en stdlib.h

Igual, aunque incluyas esa librería, no te recomiendo que lo uses... (y mucho menos tantas veces como aparece en tu código!). Aquí una explicación de por qué es malo y posibles soluciones:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Como dice daniyo, también te recomiendo que cojas un buen libro de C.

Saludos.
no me respondiste la pregunta anterior, y si me compila tal cual como esta ahi puesto usando el Dev-C++


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 17:36 pm
¿Te refieres a la pregunta de los procedimientos? Respondí esto:

Citar
Sí, existen en C, solo que se llaman funciones.

Saludos.

Y el código a mí no me funciona. De hecho, aquí mismo pone que es necesario stdlib.h...: http://www.cplusplus.com/reference/clibrary/cstdlib/system/

Por cierto, con contradecir a daniyo no vas a ganar nada... Más que nada porque él está en lo cierto xD.

Saludos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 17:43 pm
¿Te refieres a la pregunta de los procedimientos? Respondí esto:

Y el código a mí no me funciona. De hecho, aquí mismo pone que es necesario stdlib.h...: http://www.cplusplus.com/reference/clibrary/cstdlib/system/

Por cierto, con contradecir a daniyo no vas a ganar nada... Más que nada porque él está en lo cierto xD.

Saludos.


apuesto 100.000$ a que 2 ==3 es un bucle infinito.

esa no es la pregunta anterior, la pregunta anterior es esta:
como puedo implementar entonces esas funciones tipo procedures en mi codigo para que me devuelva al menu principal?
muchas gracias de antemano por ayudarme


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 17:48 pm
Hombre, explicar las funciones cuando en los libros la explicación es de unas 20 ó 30 páginas... Sería un poco larga la explicación. El foro, como ya ha dicho daniyo, es para preguntar dudas puntuales, no para que te digamos la teoría...

Y si no quieres creerlo, pues no lo creas, pero 2==3 SOLO te va a repetir lo que está en el do-while UNA vez.

Saludos.


Título: Re: ayuda con menu en c
Publicado por: do-while en 5 Julio 2012, 17:53 pm
Hombre, explicar las funciones cuando en los libros la explicación es de unas 20 ó 30 páginas... Sería un poco larga la explicación. El foro, como ya ha dicho daniyo, es para preguntar dudas puntuales, no para que te digamos la teoría...

Y si no quieres creerlo, pues no lo creas, pero 2==3 SOLO te va a repetir lo que está en el do-while UNA vez.

Saludos.

+1 XD

¿Es dos igual a tres? NOOOOOO, -> falso -> sale del bucle


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 17:54 pm
no es que me las expliques, es que las implementes en mi codigo


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 17:55 pm
Ah, claro, voy a hacerte la tarea ^^

Saludos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 17:57 pm
+1 XD

¿Es dos igual a tres? NOOOOOO, -> falso -> sale del bucle
es que es alreves como es falso el bucle se repite....


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 17:58 pm
Ah, claro, voy a hacerte la tarea ^^

Saludos.

por favor ayudame, es una tonteria seguro, ya he buscado mil formas y no he podido....


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 18:02 pm
Claro, pero como estamos hablando de C, pues entonces al poner en while(2==3) saldrá del bucle... No sé si te habrás molestado en buscar cosas de C por Internet, en libros, etc.


Citar
por favor ayudame, es una tonteria seguro, ya he buscado mil formas y no he podido....

¿Para que nos vuelvas a contradecir (a mí o a daniyo) cuando tenemos razón? (porque si contesto en un tema es porque lo sé, no para liar a alguien que estudia C).

Si me dices qué has intentando, quizás pueda ayudarte, sino...

Saludos.


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 18:06 pm
es que es alreves como es falso el bucle se repite....


¿Volviendo a contradecir? Como es falso el bucle finaliza xD

Saludos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 18:16 pm
¿Volviendo a contradecir? Como es falso el bucle finaliza xD

Saludos.

pero en pascal cuando pones
repeat

until 2=3

se repite el bucle indefinidamente,

no sabia que en C era alrevez,
por favor implementa en mi codigo las funciones he intentado y no he podido...


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 18:18 pm
Pues traduce el significado de do... while y te darás cuenta de qué es, o sino, leyéndote un libro seguro que no nos hubieras contradicho cuando no tenías razón. ¡Hablamos de C, no de Pascal!

Ya te he dicho que te ayudo cuando pongas lo que has intentado...

Saludos.



Título: Re: ayuda con menu en c
Publicado por: do-while en 5 Julio 2012, 18:18 pm
es que es alreves como es falso el bucle se repite....


1º - Si no sabes de lo que estas hablando, deja de molestar.
2º - Pasate por la sección de libros - papers y descargate algo para EMPEZAR a aprender.
3º - Cuando hayas estudiado y tengas alguna duda, la preguntas.
4º - Si estas en un foro, y tres personas te estan diciendo algo que tu no pienses que sea asi, molestate en enterarte de lo que estas hablando, es probable que no estes en lo cierto.
5º - Por mi parte, con esa actitud que tienes, olvidate de obtener ninguna respuesta.

¡Saludos!


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.


Título: Re: ayuda con menu en c
Publicado por: 0xDani en 5 Julio 2012, 18:21 pm
Pascal != C (Espero que sepas cuales son los operadores relacionales), asi que el hecho de que sepas pascal no implica que sepas C, coge un libro ya y cuando sepas cosas tan basicas como que repeat-until no existe en C, entonces ven y pregunta, en vez de decir que te hagan las cosas.

Saludos.


Título: Re: ayuda con menu en c
Publicado por: BlerofonT en 5 Julio 2012, 18:29 pm
sigue en pie lo de los $100.000???...jajajaja. Es broma no te lo tomes a mal ;)

Estoy con mis compañeros, aprende un poco mas porque aun estas muy verde (osea, con conocimientos muy basicos) y sobre todo modera un poco tus formas, que ya imagino que no lo hagas con mala intencion, pero lo parece. Trata de explicarnos mejor lo que quieres hacer y vete poniendo el codigo que estes TU escribiendo y no nos pidas q lo hagamos por ti!!! :P

Un saludo y animo!


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 18:32 pm
espero me ayuden a implementar las funciones....


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 18:34 pm
sigue en pie lo de los $100.000???...jajajaja. Es broma no te lo tomes a mal ;)

Estoy con mis compañeros, aprende un poco mas porque aun estas muy verde (osea, con conocimientos muy basicos) y sobre todo modera un poco tus formas, que ya imagino que no lo hagas con mala intencion, pero lo parece. Trata de explicarnos mejor lo que quieres hacer y vete poniendo el codigo que estes TU escribiendo y no nos pidas q lo hagamos por ti!!! :P

Un saludo y animo!

no tengo la culpa yo emepeze mi proyecto con repeat until y me dijeron que lo sustituyera por do y while por lo tanto pensaba que era lo mismo.


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 18:40 pm
Bueno, a no ser que madures un poco este es mi último mensaje en este tema, ya que me gusta ayudar a la gente que se interesa por lo que hace, no que quiere que le hagamos las cosas.

Te dijimos que era do... while, sí, pero:

1. Las dos palabras inglesas tienen un significado claro, por lo que era evidente que no es como en Pascal.
2. Esto es C, no Pascal.
3. Te tendrías que haber molestado en buscar en un libro el uso de do... while.

Y por cierto, lee esto:

http://foro.elhacker.net/programacion_cc/reglas_del_subforo-t251603.0.html

https://docs.google.com/document/pub?id=1OsG_dD3SwbkOmMTg3bAFFRFY69Tq6JQLFf593n97D7Y

http://foro.elhacker.net/programacion_general/reglas_del_foro_iexclleed_todos-t93852.0.html

Normas del foro, del foro de Programación, y del subforo de C.

Saludos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 18:45 pm
Bueno, a no ser que madures un poco este es mi último mensaje en este tema, ya que me gusta ayudar a la gente que se interesa por lo que hace, no que quiere que le hagamos las cosas.

Te dijimos que era do... while, sí, pero:

1. Las dos palabras inglesas tienen un significado claro, por lo que era evidente que no es como en Pascal.
2. Esto es C, no Pascal.
3. Te tendrías que haber molestado en buscar en un libro el uso de do... while.

Y por cierto, lee esto:

http://foro.elhacker.net/programacion_cc/reglas_del_subforo-t251603.0.html

https://docs.google.com/document/pub?id=1OsG_dD3SwbkOmMTg3bAFFRFY69Tq6JQLFf593n97D7Y

http://foro.elhacker.net/programacion_general/reglas_del_foro_iexclleed_todos-t93852.0.html

Normas del foro, del foro de Programación, y del subforo de C.

Saludos.

ah bueno entonces no me vas a ayudar con la implementacion de las funciones, gracias de todas maneras...


Título: Re: ayuda con menu en c
Publicado por: DickGumshoe en 5 Julio 2012, 18:46 pm
Has dicho que has intentado algo, ¿verdad? Pues ponlo y te ayudamos.


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 19:15 pm
Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4.  
  5. {
  6.   int op;
  7.   do
  8.   {
  9.   menu:
  10.   system("cls");
  11.   printf ( "MENU: \n" );
  12.   printf ( "Opcion (1)\n" );
  13.   printf ( "Opcion (2)\n" );
  14.   printf ( "Opcion (3)\n" );
  15.   printf ( "Opcion (4)\n" );
  16.   scanf("%d",&op)  ;
  17.      if ( op == 1 )
  18.      {
  19.      system("cls");
  20.      printf("Hola Mundo 1\n");
  21.      system("pause");
  22.      goto menu;
  23.      }
  24.     if ( op == 2 )
  25.     {
  26.      system("cls");
  27.      printf("Hola Mundo 2\n");
  28.      system("pause");
  29.     }
  30.     if ( op == 3 )
  31.     {
  32.      system("cls");
  33.      printf("Hola Mundo 3\n");
  34.      system("pause");
  35.     }
  36.     if ( op == 4 )
  37.     {
  38.      system("cls");
  39.      printf("Hola Mundo 4\n");
  40.      system("pause");
  41.     }
  42.   }
  43.   while(2 == 3);
  44.  
  45. }
  46.  
solo he podido con etiquetas, con funciones no he podido, por favor ayudame


Título: Re: ayuda con menu en c
Publicado por: durasno en 5 Julio 2012, 19:47 pm
Citar
Pascal != C
xDDDDDD...

shitoman no uses goto ya que  no debe usarse en un lenguaje estructurado como lo es C. Te dejo el codigo con una funcion, despues implementalo en las demas opciones
Código
  1. #include <stdio.h>
  2.  
  3. void func1(void); /* prototipo de la funcion */
  4. int main ()
  5.  
  6. {
  7.   int op;
  8.   do
  9.   {
  10.   system("cls");
  11.   printf ( "MENU: \n" );
  12.   printf ( "Opcion (1)\n" );
  13.   printf ( "Opcion (2)\n" );
  14.   printf ( "Opcion (3)\n" );
  15.   printf ( "Opcion (4)\n" );
  16.   printf("Opcion (5) para salir del programa\n");
  17.   scanf("%d",&op)  ;
  18.      if ( op == 1 )
  19.      {
  20.        func1(); // llamada de la funcion func1
  21.      }
  22.     if ( op == 2 )
  23.     {
  24.      system("cls");
  25.      printf("Hola Mundo 2\n");
  26.      system("pause");
  27.     }
  28.     if ( op == 3 )
  29.     {
  30.      system("cls");
  31.      printf("Hola Mundo 3\n");
  32.      system("pause");
  33.     }
  34.     if ( op == 4 )
  35.     {
  36.      system("cls");
  37.      printf("Hola Mundo 4\n");
  38.      system("pause");
  39.     }
  40.   }
  41.   while(op!=5);
  42.  
  43. }
  44.  
  45.  
  46. void func1(void) {
  47.      system("cls");
  48.      printf("Hola Mundo 1\n");
  49.      system("pause");
  50. }


Toma los consejos que te dieron, y lo principal lee un libro de C

Saludos


Título: Re: ayuda con menu en c
Publicado por: General Dmitry Vergadoski en 5 Julio 2012, 20:07 pm
muchas gracias amigo "durasno" me salvaste la vida...


Título: Re: ayuda con menu en c
Publicado por: durasno en 5 Julio 2012, 20:17 pm
De nada... si queres un consejo de que libro aprender C, te recomiendo este:
Programacion en C Metodologia, Algoritmos y Estructurade datos

Saludos


Título: Re: ayuda con menu en c
Publicado por: twins en 6 Julio 2012, 21:00 pm
hola amigo aqui tienes un menu implementado con funciones cualquier duda me preguntas cordiales saludos.


#include <stdio.h>
//declaracion de las funciones
 int menu();
 int pidenum();
 void programa1();
 void programa2();
 void programa3();
 void programa4();
int main(void){//funcion principal main aqui se hace el llamado al resto de las funciones
   int opc;
   do{
      opc=menu();
      switch(opc){//el switch tiene todas las opciones desponibles, cada opcion es realizada por una funcion
         case 1:
            programa1();
            printf("\n");
         break;
          case 2:
            programa2();
            printf("\n");
         break;
          case 3:
            programa3();
            printf("\n");
         break;
          case 4:
            programa4();
            printf("\n");
         break;
          case 0:// caso cero para salir delprograma
            return(0);
          default:// default si el usuario ingresa una opcion distinta se mostrara este mensaje
            printf("error la opcion no esta en el menu");
      }   
    }while(opc!=0);//mientras el usuario no igrese el cero el programa continuara su ejecucion
return(0);   
 }//implementacion de las funciones
int menu(){
   printf("1 programa1\n2 programa2\n3 programa3\n4 programa4\n0salir\n");
   return(pidenum());//la opcion menu imprime el menu y retorna a la funcion pide() es decir siempre estara pidiendo que ingrese una opcion
}   
int pidenum(){
   int num;
   printf("ingrese opcion\n");
   scanf("%i",&num);
   return(num);
}   
void programa1(){
   printf("programa1\n");
}   
void programa2(){
   printf("programa2\n");
}   
void programa3(){
   printf("programa3\n");
}   
void programa4(){
   printf("programa4\n");
}