Autor
|
Tema: [Lenguaje C] Volver al menu principal (Leído 24,492 veces)
|
Whiteseba
Desconectado
Mensajes: 4
|
Hola, soy nuevo en el foro y tambien nuevo en la programacion. Vi algunas cosas en la escuela y hoy quise recordarlas y ponerme a tono ya que en esta semana empiezo de vuelta el ultimo año de la carrera y no quiero olvidarme. Hice una calculadora de valores de resistencias (electronica), el proceso lo hace todo bien sin ningun error, pero lo que quiero es que despues de que termine de calcular una resistencia pueda volver al primer menu. Esta todo hecho con switchs, aca les dejo el codigo #include <stdio.h> #include <stdlib.h> int main() { int color1; int color2; int color3; int opcion; printf("0) Negro\n 1) Marron\n 2) Rojo\n 3) Naranja\n 4) Amarillo\n 5) Verde\n 6) Azul\n 7) Violeta\n 8) Gris\n 9) Blanco\n"); switch(color1){ case 0: color1 = 0; printf("El primer color seleccionado es el Negro\n"); break; case 1: color1 = 1; printf("El primer color seleccionado es el Marron\n"); break; case 2: color1 = 2; printf("El primer color seleccionado es el Rojo\n"); break; case 3: color1 = 3; printf("El primer color seleccionado es el Naranja\n"); break; case 4: color1 = 4; printf("El primer color seleccionado es el Amarillo\n"); break; case 5: color1 = 5; printf("El primer color seleccionado es el Verde\n"); break; case 6: color1 = 6; printf("El primer color seleccionado es el Azul\n"); break; case 7: color1 = 7; printf("El primer color seleccionado es el Violeta\n"); break; case 8: color1 = 8; printf("El primer color seleccionado es el Gris\n"); break; case 9: color1 = 9; printf("El primer color seleccionado es el Blanco\n"); break; } printf("0) Negro\n 1) Marron\n 2) Rojo\n 3) Naranja\n 4) Amarillo\n 5) Verde\n 6) Azul\n 7) Violeta\n 8) Gris\n 9) Blanco\n"); switch(color2){ case 0: color2 = 0; printf("El segundo color seleccionado es el Negro\n"); break; case 1: color2 = 1; printf("El segundo color seleccionado es el Marron\n"); break; case 2: color2 = 2; printf("El segundo color seleccionado es el Rojo\n"); break; case 3: color2 = 3; printf("El segundo color seleccionado es el Naranja\n"); break; case 4: color2 = 4; printf("El segundo color seleccionado es el Amarillo\n"); break; case 5: color2 = 5; printf("El segundo color seleccionado es el Verde\n"); break; case 6: color2 = 6; printf("El segundo color seleccionado es el Azul\n"); break; case 7: color2 = 7; printf("El segundo color seleccionado es el Violeta\n"); break; case 8: color2 = 8; printf("El segundo color seleccionado es el Gris\n"); break; case 9: color2 = 9; printf("El segundo color seleccionado es el Blanco\n"); break; } printf("0) Negro\n 1) Marron\n 2) Rojo\n 3) Naranja\n 4) Amarillo\n 5) Verde\n 6) Azul\n 7) Violeta\n 8) Gris\n 9) Blanco\n"); switch(color3){ case 0: printf("La resistencia tiene un valor de %d%d Ohm",color1 ,color2 ); break; case 1: color3 = 0; printf("La resistencia tiene un valor de %d%d%d Ohm",color1 ,color2 ,color3 ); break; case 2: color3 = ("00"); printf("La resistencia tiene un valor de %d%d%s Ohm",color1 ,color2 ,color3 ); break; case 3: color3 = ("000"); printf("La resistencia tiene un valor de %d%d%s Ohm",color1 ,color2 ,color3 ); break; case 4: color3 = ("0000"); printf("La resistencia tiene un valor de %d%d%s Ohm",color1 ,color2 ,color3 ); break; case 5: color3 = ("00000"); printf("La resistencia tiene un valor de %d%d%s Ohm",color1 ,color2 ,color3 ); break; case 6: color3 = ("000000"); printf("La resistencia tiene un valor de %d%d%s Ohm",color1 ,color2 ,color3 ); break; case 7: color3 = ("0000000"); printf("La resistencia tiene un valor de %d%d%s Ohm",color1 ,color2 ,color3 ); break; case 8: color3 = ("00000000"); printf("La resistencia tiene un valor de %d%d%s Ohm",color1 ,color2 ,color3 ); break; case 9: color3 = ("000000000"); printf("La resistencia tiene un valor de %d%d%s Ohm",color1 ,color2 ,color3 ); break;} printf("Deseas volver al menu principal?\n 1. Si\n 2. No\n"); return 0; }
Como veran, despues del scanf("%d,opcion); no hay nada, porque no se que poner para poder volver al primer printf Alguien que me ayude se lo agradeceria muchisimo
|
|
« Última modificación: 3 Marzo 2012, 23:38 pm por Whiteseba »
|
En línea
|
|
|
|
|
anonimo12121
|
Yo te recomendaría que uses funciones y sentencias if
|
|
|
En línea
|
|
|
|
armizh
Desconectado
Mensajes: 187
His brain caught in a hole...
|
Yo te recomendaría que uses funciones y sentencias if
Seria un desperdicio ocupar un if...else porque esta analizando siempre la misma variable en ambos casos. Yo de verdad te recomendaria ocupar las etiquetas GeSHi con resaltado para cpp xd Luego de donde dice "code" le agregas "=cpp" o "=c", todo dentro de los corchetes. Para hacer lo del menu principal debes usar un while(1), que espera a que 1 = 0 o se rompa con el bucle, y cuando se elija salir, haces un break, o tambien creas una variable int, te lo explico. int salir = 0; while(salir) { /* Aca va el codigo */ if(variable_de_eleccion_del_menu==valor_para_salir) salir++; }
Y con eso haces un bucle que te mantenga en el programa hasta que el usuario quiera salir. Tambien he visto esto: while(1) { /* Aca va el codigo */ if(variable_de_eleccion_del_menu==valor_para_salir) break; }
Pero no recuerdo si este ultimo era en C o en alguna de sus variantes, yo prefiero usar la primera opcion que di. Saludos
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
Whiteseba
Desconectado
Mensajes: 4
|
Seria un desperdicio ocupar un if...else porque esta analizando siempre la misma variable en ambos casos. Yo de verdad te recomendaria ocupar las etiquetas GeSHi con resaltado para cpp xd Luego de donde dice "code" le agregas "=cpp" o "=c", todo dentro de los corchetes. Para hacer lo del menu principal debes usar un while(1), que espera a que 1 = 0 o se rompa con el bucle, y cuando se elija salir, haces un break, o tambien creas una variable int, te lo explico. int salir = 0; while(salir) { /* Aca va el codigo */ if(variable_de_eleccion_del_menu==valor_para_salir) salir++; }
Y con eso haces un bucle que te mantenga en el programa hasta que el usuario quiera salir. Tambien he visto esto: while(1) { /* Aca va el codigo */ if(variable_de_eleccion_del_menu==valor_para_salir) break; }
Pero no recuerdo si este ultimo era en C o en alguna de sus variantes, yo prefiero usar la primera opcion que di. Saludos Ese codigo que me decis es para salir del programa solamente no? Porque yo quiero que al apretar un 1 vuelva al primer printf que me da los primero colores
|
|
|
En línea
|
|
|
|
armizh
Desconectado
Mensajes: 187
His brain caught in a hole...
|
Ese codigo que te digo te mantiene en el programa con un bucle infinito a menos que el usuario decida salir, es decir, cada vez que termine de ejecutarse el codigo le "preguntas" al usuario si desea salir. Algo asi como esto: int salir = 0; while(salir) { /* ... */ printf("Desea realizar otra operacion? [s/n] "); char *resp; if(strcmp(res ,"s")!=0) salir ++; }
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
Whiteseba
Desconectado
Mensajes: 4
|
Gracias por las respuestas, al final lo pude solucionar con un while =D
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Hay dos errores en tu fragmento de código.
* Si se utiliza una variable como bandera para controlar (y eventualmente terminar) un bucle "while" esta debe iniciar con un valor distinto de cero (si no es así nunca entraría en el bucle).
* No es necesario utilizar un puntero a carácter y este inicia con un valor "no definido".
Y para la comparación basta con utilizar el operador de comparación (el "==").
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
armizh
Desconectado
Mensajes: 187
His brain caught in a hole...
|
* No es necesario utilizar un puntero a carácter y este inicia con un valor "no definido".
Y para la comparación basta con utilizar el operador de comparación (el "==").
No es necesario en caso que se utilice otra forma para manejar, por ejemplo, en el menu principal utilizar una orden para terminar el programa, en cualquier caso esto lo puse como ejemplo para explicar y no me detuve en revisar los errores. Para la comparacion basta con un == si es un char, pero podriamos usar scanf (o talvez vez sea mejor idea utilizar fscanf) para almacenar una cadena en caso de que se requiera. Por cierto, gracias por las correciones. Saludos
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
armizh: revisa el codigo que dejas, no sirve de nada pretender ayudar (O FIGURAR EN EL FORO) de esta manera.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
(solucionado)volver menu principal
Programación C/C++
|
cundre
|
7
|
6,537
|
11 Febrero 2011, 17:18 pm
por cundre
|
|
|
Volver al menú principal sin usar goto
« 1 2 3 »
Programación C/C++
|
martin_poipon
|
20
|
15,964
|
3 Julio 2011, 11:19 am
por Foxy Rider
|
|
|
Menú mediante lenguaje C ¨Necesito ayuda.
Programación C/C++
|
OreOBooM
|
1
|
2,126
|
6 Noviembre 2013, 04:09 am
por Vaagish
|
|
|
netbeans abrir ventana secuandaria y volver a los procesos de la principal
Java
|
PhipexX
|
2
|
2,698
|
2 Enero 2017, 19:05 pm
por ThinkByYourself
|
|
|
"Ayuda" No se como volver al menu principal C#
Programación C/C++
|
MaximuZ
|
1
|
4,612
|
6 Junio 2017, 06:28 am
por yoelmend
|
|