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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con menú en c++
« en: 29 Mayo 2021, 14:48 pm »

Hola qué tal, soy nueva en esto y tengo un proyecto de la escuela donde estoy teniendo algunos problemas ya que al elegir la opción "3" no acaba el programa como debería de ser,sino que hace la pregunta,así como al elegir la opción de los triángulos quisiera poder volver a elegir lo valores y no que me regresara al menú principal,alguien sabe Me podría dar un consejo o decirme en que estoy fallando? Se los agradecería mucho.

Código
  1.  

#include <iostream> // librería de entrada y salida
#include <cstdlib> // librería estándar

using namespace std; // espacio de trabajo
int main(int argc, char * argv[])
{ // función o programa principal
char resp=' '; /* variable de tipo char que guardar la respuesta de si desea regresar al menú principal*/
int op=0;
do{  /*  Inicia el ciclo */
system("CLS"); /* CLS es el comando para limpiar pantalla */

cout<<"       M E N "<< char(233) << "   P R I N C I P A L"<< endl;
cout<<" 1.-"; cout<<char(168) <<"Que tipo de triangulo es?"<< endl;
cout<<" 2.-Datos de los integrantes del equipo"<< endl;
cout<<" 3.-Salir"<< endl;

cout <<"Ingresa la opcion deseada"<< endl;
cin>> op;
switch (op)
{


case 1:
{
int l1,l2,l3;

char respu=' ';
do{


cout << "Ingresa los tres lados del triangulo"<< endl;
cin>>l1;
cin>>l2;
cin>>l3;


if (l1==l2&&l1==l3&&l2==l3)
{
cout << "Triangulo equilatero"<< endl;
}
else if (l1==l2||l1==l3||l2==l3)
{
cout <<"Triangulo isosceles"<< endl;
}
else if (l1!=l2&&l1!=l2&&l2!=l3)
{
cout << "Triangulo Escaleno"<< endl;
}
cout <<"Deseas saber otro tipo de triangulo?"<< endl;


}
while((respu =='S')||(respu == 's'));

break;
} ///////

case 2:
{
cout << "Datos de los integrantes del equipo: "<<endl;
cout << "Lluvia Noemi Campos Rios"<<endl;
cout << "2do 'C'"<<endl;
break;
}
/////////
case 3:
{
cout << "Hasta luego!";
break;
}
return 0;
}




cout<<char(168)<<"Desea regresar al men"<< char(163) <<" principal (S/N)"<< char (63)<<"  ";  /* imprime la pregunta de si desea regresar al menú. *//* char(numero) es para imprimir caracteres especiales, numero representa el número en ASCII, 163 es la ú, 168 es ¿, 63 es ? */
cin>>resp; }
while((resp == 'S') || (resp == 's'));
system("PAUSE");
return 0; }


« Última modificación: 29 Mayo 2021, 20:39 pm por Noemicr20 » En línea

fzp

Desconectado Desconectado

Mensajes: 130


Ver Perfil
Re: Ayuda con menú en c++
« Respuesta #1 en: 29 Mayo 2021, 18:27 pm »

Las cosas que veo yo.

Hay dos 'return 0' de los cuales el primero creo que no se ejecuta nunca. Está dentro del 'switch' como última operación; pero como todos los 'case' tienen un 'break' siempre se sale afuera del paquete de operaciones 'switch' y nunca pasa por ahí el proceso del programa. Si se quiere que el programa se pare en el 'case 3:' hay que colocar el 'return 0' ahí, dentro del 'case 3:' en lugar del 'break'.

En el 'case 1:' se declara la variable 'resp' y se le asigna un valor de cadena vacía. Después dentro del bucle 'do' no se le asigna ningún nuevo valor (no existe ninguna instrucción 'cin' ni ningún 'resp ='), con lo cual al llegar al final del bucle en 'while' nunca se cumple la condición ya que nunca es resp == 'S' ni tampoco resp == 's'... siempre es resp == cadena vacía; con lo que se sale del bucle y nunca se vuelve al 'do'.

La tercera comparación de los triángulos no es correcta me parece, se ha repetido la compración de los lados 1 y 2 y falta la del lado1 con el lado 3:
 "else if (l1!=l2&&l1!=l2&&l2!=l3)"
Pero es que además es innecesaria, un triángulo sólo puede ser equilátero, isósceles o escaleno, por lo que si no es de ninguna de las dos primeras clases por fuerza es de la tercera y ya no hace falta el 'if'. Simplemente 'else' ------> es escaleno.

No se han respetado las buenas normas de escritura de código C/C++: sangrado de líneas, alineación de llaves {, } de forma que se visualice bien la estructura del programa sin tener que buscar qué parte se corresponde con qué otra parte,...

Es norma del foro poner las secuencias de código entre etiquetas, para ello tienes entre las opciones para el texto del mensaje el pequeño menú desplegable 'Código GeSHi'. Al exponer tu código en un mensaje selecciónalo, despliega el menú y dále una opción de lenguaje, igual que harías si quisieses poner negrita, color de letra, tamaño, etc.



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
DVD sin menu... (ayuda)
Multimedia
g-unit 3 2,061 Último mensaje 1 Septiembre 2005, 14:14 pm
por g-unit
como lleno los datos que tiene un menu a otro menu vacio, en asp.net c#
.NET (C#, VB.NET, ASP)
ivan05f 2 3,544 Último mensaje 8 Noviembre 2007, 18:58 pm
por ivan05f
Restaura el menú inicio en Windows 8 con Start Menu Reviver
Noticias
wolfbcn 0 2,046 Último mensaje 19 Mayo 2013, 13:38 pm
por wolfbcn
Menú de usuario en Windows 8.1 y olvida el menú de inicio
Noticias
wolfbcn 0 1,582 Último mensaje 23 Septiembre 2014, 14:00 pm
por wolfbcn
Ayuda en Python! Hacer un menú dentro de otro menú con diccionarios
Scripting
Daor02 1 3,693 Último mensaje 3 Julio 2016, 05:28 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines