#include <stdio.h>
void tabla ()
{
int numero, i;
printf("Introduce el numero del que quieres ver su tabla de multiplicar: \n");
scanf("%d", &numero);
printf("Tabla de multiplicar del %d\n", numero);
printf("============================\n");
for (i=1; i<=10; i++)
printf("%d * %d = %d\n", numero, i, numero*i);
}
main()
{
int opcion;
do
{
printf("1.- Tabla de multiplicar\n");
printf("2.- Mayusculas/Minusculas\n");
printf("3.- Salir\n");
scanf("%d", &opcion);
}
while (opcion<1 || opcion>3);
switch (opcion){
case 1: tabla();
break;
//case 2: cambio();
//break;
//case 3: break;
}
}
procedimiento menu
imprime menú
recoge opción
case opción
valor1 -> acción1
...
valorn -> acciónn
fin
fin
principio
MientrasQue cierto
menu
finMQ
finfunción menu
imprime menú_opción0
recoge opción
devuelve opcion
fin
principio
opción <- menu
MientrasQue opción distinto de 0
case opción
valor1 -> acción1
...
valorn -> acciónn
fin
opción <-menu
finMQ
finamuchamu escribió:La etiqueta code está para poner código.
Si sólo quieres que se muestre el menú tras terminar:procedimiento menu
imprime menú
recoge opción
case opción
valor1 -> acción1
...
valorn -> acciónn
fin
fin
principio
MientrasQue cierto
menu
finMQ
fin
Claro que eso es bucle infinito. Es una forma, puedes tenerlo todo dentro del main, mover las acciones al main, etc.
Una solución mejor sería añadir una opción para terminar.función menu
imprime menú_opción0
recoge opción
devuelve opcion
fin
principio
opcion <- menu
MientrasQue opcion distinto de 0
case opción
valor1 -> acción1
...
valorn -> acciónn
fin
menu
finMQ
fin
Aparece el menú, pide una opción, si no es 0, ejecuta la acción y vuelve a mostrar el menú, se repite hasta que se elige la opción 0, se sale del bucle y se termina.
main(){
bool condicion=true;
while(condicion){
printf("te enseño la linea1 de mi menu\n");
printf("te enseño la linea2 de mi menu\n");
//Aquí coges los datos que le pides al usuario
switch(datoCogido){
case 0: funcion1(); break;
case 1: funcion2(); break;
case 9: condicion=false; break; //<-- Con este indica al bucle while que finalice
default: break;
}
}
return 0;
}
krausen escribió:De forma muy simple puedes hacer lo siguiente:
Mete el menú dentro de un bucle WHILE que finalicé unicamente cuando se introduzca el valor asignado para que termine (por ejemplo, si en el menú tienes puesto "introduce 9 para salir" pues dentro del SWITCH del menú haces un CASE (9) y pones la variable que controla el WHILE a falso. De este modo, hasta que el usuario no introduzca el valor preciso para salir, el bucle se repetirá una y otra vez mostrando el menú.
En modo esquema (y suponiendo el 9 para salir):main(){
bool condicion=true;
while(condicion){
printf("te enseño la linea1 de mi menu\n");
printf("te enseño la linea2 de mi menu\n");
//Aquí coges los datos que le pides al usuario
switch(datoCogido){
case 0: funcion1(); break;
case 1: funcion2(); break;
case 9: condicion=false; break; //<-- Con este indica al bucle while que finalice
default: break;
}
}
return 0;
}
Barracuda escribió:En tu código: swicht sin los break dentro del do while, y que se repita siempre que opción no sea 3.
salu2
gracias.#include <stdio.h>
void tabla ()
{
int numero, i;
printf("Introduce el numero del que quieres ver su tabla de multiplicar: \n");
scanf("%d", &numero);
printf("Tabla de multiplicar del %d\n", numero);
printf("============================\n");
for (i=1; i<=10; i++)
printf("%d * %d = %d\n", numero, i, numero*i);
}
main()
{
int opcion;
bool salir = false;
do
{
printf("1.- Tabla de multiplicar\n");
printf("2.- Mayusculas/Minusculas\n");
printf("3.- Salir\n");
scanf("%d", &opcion);
switch (opcion)
{
case 1: tabla();
break;
case 2: //cambio();
break;
case 3: salir=true;
}
}
while (!salir);
}nebb_5 escribió:Y uno de los errores que me da es: error C2065: 'bool' : undeclared identifier
nebb_5 escribió:Y uno de los errores que me da es: error C2065: 'bool' : undeclared identifier
Qué estoy haciendo mal?
Gracias
Razorblade escribió:nebb_5 escribió:Y uno de los errores que me da es: error C2065: 'bool' : undeclared identifier
Es que C puro (ANSI) no tiene el tipo de dato booleano.
Prueba añadiendo un #include <stdbool.h>
krausen escribió:Tan sencillo como usar un entero en vez de un booleano:
...
Por cierto, no sabia que el C estricto no tenía booleanos, que curioso
kachorro escribió:Para lo de la tecla, ¿has probado la función getchar() de stdio.h ?
main()
{
int opcion;
do
{
printf("1.- Tabla de multiplicar\n");
printf("2.- Mayusculas/Minusculas\n");
printf("3.- Salir\n");
scanf("%d", &opcion);
switch (opcion)
{
case 1: tabla();
break;
case 2: cambio();
break;
case 3: break;
}
getchar();
}
while (opcion!=3);
}
main()
{
char ch;
int opcion;
ch=0;
do
{
printf("1.- Tabla de multiplicar\n");
printf("2.- Mayusculas/Minusculas\n");
printf("3.- Salir\n");
scanf("%d", &opcion);
switch (opcion)
{
case 1: tabla();
break;
case 2: cambio();
break;
case 3: break;
}
while(ch==0)ch=getchar();
ch=0;
}
while (opcion!=3);
}nebb_5 escribió:Por cierto, como puedo hacer para que una vez termine la llamada a una función, el programa se quede esperando a que pulse cualquier tecla para continuar? En java creo que utilizaba el .nextLine(), he probado a utilizar scanf() pero me pide que le pase argumentos, entonces entiendo que debería de crear una variable...hay otra forma de hacerlo?
getch();
#include <conio.h>
nebb_5 escribió:Gracias por contestar, cuando lo pruebe comento.
Muchas gracias
GameZelda escribió:Prueba a poner getc(stdin), que está en <stdio.h>.
Otra cosa que puedes hacer es system("PAUSE") de <stdlib.h>, pero hay el problema que solo funciona en Windows.
Por cierto, lo de <conio.h> no lo recomiendo porque no es estándar, y lo de dos veces seguidas... no veo porque tenga que funcionar a la segunda si no lo hace a la primera
:main()
{
int opcion;
do
{
printf("\n1.- Tabla de multiplicar\n");
printf("2.- Mayusculas/Minusculas\n");
printf("3.- Salir\n");
scanf("%d", &opcion);
switch (opcion)
{
case 1: tabla(); getc(stdin);
break;
case 2: cambio(); getc(stdin);
break;
case 3: break;
}
getc(stdin);
}
while (opcion!=3);
}main()
{
int opcion;
do
{
printf("\n1.- Tabla de multiplicar\n");
printf("2.- Mayusculas/Minusculas\n");
printf("3.- Salir\n");
scanf("%d", &opcion);
switch (opcion)
{
case 1: tabla(); //getc(stdin);
break;
case 2: cambio(); //getc(stdin);
break;
case 3: break;
}
getc(stdin);
}
while (opcion!=3);
}main()
{
int opcion;
do
{
printf("\n1.- Tabla de multiplicar\n");
printf("2.- Mayusculas/Minusculas\n");
printf("3.- Salir\n");
scanf("%d", &opcion);
switch (opcion)
{
case 1: tabla(); getc(stdin);
break;
case 2: cambio(); getc(stdin);
break;
case 3: break;
}
//getc(stdin);
}
while (opcion!=3);
}GameZelda escribió:Por cierto, lo de <conio.h> no lo recomiendo porque no es estándar, y lo de dos veces seguidas... no veo porque tenga que funcionar a la segunda si no lo hace a la primera