Registrarse

Duda con un pequeño programa de C++

Estado
Cerrado para nuevas respuestas.

Keux

Have you seen John Titor?
Buenas! Se que este foro no se especializa en esto, pero espero que haya gente que sepa de este lenguaje y me pueda ayudar ^^

Os pongo en situación: El profesor me ha pedido hacer un programa en C++ que te da un menu con 5 opciones, +,-,*,/ y salir del programa, a parte quiere que cuando introduzcas el 1 salga la suma por ejemplo, etc. y mi duda llega cuando nos dijo que si se introduce un numero distinto del 1 al 5 se repita todo, es decir, te devuelva al menú. Dejo por aquí abajo mi código para que lo reviséis. Tengo todo hecho a excepción de lo último que he dicho:

#include <iostream>
using namespace std;
int main(){
int a,b,c;
cout<<"MENU DE SELECCION"<<endl;
cout<<"1- SUMA"<<endl;
cout<<"2- RESTA"<<endl;
cout<<"3- MULTIPLICAR"<<endl;
cout<<"4- DIVISION"<<endl;
cout<<"5- SALIR"<<endl;
cout<<"Introduce un numero: "<<endl;
cin>>a;
while (a>6|a<0){
cout<<"Selecciona un num. del 1 al 5 de nuevo"<<endl;
}
if (a==1){
cout<<"SUMA SELECCIONADA"<<endl;
cout<<"---------------"<<endl;
cout<<"Introduce el primer numero: "<<endl;
cin>>b;
cout<<"Introduce el segundo numero: "<<endl;
cin>>c;
cout<<"El resultado es: "<<b+c<<endl;
}
if (a==2){
cout<<"RESTA SELECCIONADA"<<endl;
cout<<"---------------"<<endl;
cout<<"Introduce el primer numero: "<<endl;
cin>>b;
cout<<"Introduce el segundo numero: "<<endl;
cin>>c;
cout<<"El resultado es: "<<b-c<<endl;
}
if (a==3){
cout<<"MULTIPLICACION SELECCIONADA"<<endl;
cout<<"---------------"<<endl;
cout<<"Introduce el primer numero: "<<endl;
cin>>b;
cout<<"Introduce el segundo numero: "<<endl;
cin>>c;
cout<<"El resultado es: "<<b*c<<endl;
}
if (a==4){
cout<<"DIVISION SELECCIONADA"<<endl;
cout<<"---------------"<<endl;
cout<<"Introduce el primer numero: "<<endl;
cin>>b;
cout<<"Introduce el segundo numero: "<<endl;
cin>>c;
while (b==0){
cout<<"Introduce el primer numero: "<<endl;
cin>>b;
cout<<"Introduce el segundo numero: "<<endl;
cin>>c;
}
while (c==0){
cout<<"Introduce el primer numero: "<<endl;
cin>>b;
cout<<"Introduce el segundo numero: "<<endl;
cin>>c;
}
cout<<"El resultado es: "<<float (b) / float (c)<<endl;
}
if (a==5){
cout<<"Presiona una tecla para salir"<<endl;
return 0;
}

}


Otra cosa que añadir es que se que no es muy bonito a la vista pero al menos funciona, de paso si sabe alguien como puedo optimizarlo que lo comente por favor. Gracias de antemano!
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Bueno no tengo tiempo para analizar todo el código pero lo que tendrías que hacer es meterlo todo en un bucle que solo se rompa si se presiona la opción de salir (que por lo que veo es pulsando 5).
Sería algo así (es un ejemplo muy cutre):
Código:
int main() {
  // Inicias las variables
  bool running = true;

  // Bucle principal del programa
  while(running) {
    // Aquí sería cuando tendrías que seleccionar una opción, por ejemplo vamos a asumir que la opción se guarda en la variable "a"
    switch(a) {
      case 1:
        // Si introduces 1 se ejecuta lo de aquí...
        break;
     case 2:
       // Si introduces 2 se ejecuta lo de aquí...
       break;
     case 3:
       // Si introduces 3 se ejecuta lo de aquí...
       break;
     case 4:
       // Si introduces 4 se ejecuta lo de aquí...
       break;
     case 5:
       // Si introduces 5 se ejecuta lo de aquí...
       running = false; // Salimos del bucle, ya se termina el programa
       break;
    default:
      // No se ha introducido algo válido
      // Aquí podrías poner que tu opción no es válida y el bucle volvería a empezar
      break;
    }
  }
}
 

Jes

Profesional de WaH
Aquí lo tienes, también he optimizado un poco el código.

Un consejo, no utilices std::endl ya que no solo pone un final de linea, si no que también vacía el buffer lo cual es innecesario y tarda más en ejecutarse que un simple '\n'

Código:
#include <iostream>

int main()
{
    int a, b, c;

    while (true)
    {

        std::cout << "MENU DE SELECCION\n"
                     "1- SUMA\n"
                     "2- RESTA\n"
                     "3- MULTIPLICAR\n"
                     "4- DIVISION\n"
                     "5- SALIR\n"
                     "Introduce un numero: ";
        std::cin >> a;

        if (a == 1)
        {
            std::cout << "\nSUMA SELECCIONADA\n"
                         "---------------\n"
                         "Introduce el primer numero: ";
            std::cin >> b;
            std::cout << "Introduce el segundo numero: ";
            std::cin >> c;
            std::cout << "El resultado es: " << b + c << "\n\n";
        }
        if (a == 2)
        {
            std::cout << "\nRESTA SELECCIONADA\n"
                         "---------------\n"
                         "Introduce el primer numero: ";
            std::cin >> b;
            std::cout << "Introduce el segundo numero: ";
            std::cin >> c;
            std::cout << "El resultado es: " << b - c << "\n\n";
        }
        if (a == 3)
        {
            std::cout << "\nMULTIPLICACION SELECCIONADA\n"
                         "---------------\n"
                         "Introduce el primer numero: ";
            std::cin >> b;
            std::cout << "Introduce el segundo numero: ";
            std::cin >> c;
            std::cout << "El resultado es: " << b * c << "\n\n";
        }
        if (a == 4)
        {
            std::cout << "\nDIVISION SELECCIONADA"
                         "---------------\n"
                         "Introduce el primer numero: ";
            std::cin >> b;
            std::cout << "Introduce el segundo numero: ";
            std::cin >> c;

            while ((b == 0) || (c == 0))
            {
                std::cout << "Introduce el primer numero: ";
                std::cin >> b;
                std::cout << "Introduce el segundo numero: ";
                std::cin >> c;
            }
            std::cout << "El resultado es: " << float(b) / float(c) << "\n\n";
        }
        if (a == 5)
        {
            std::cout << "Presiona una tecla para salir";
            std::cin.clear();
            std::cin.ignore(32767, '\n');
            std::cin.get();
            break;
        }
        else
        {
            std::cout << "Selecciona un num. del 1 al 5 de nuevo.\n";
        }
    }
}
 
Última edición:

Keux

Have you seen John Titor?
Gracias chicos!! Me ha sido muy util @KleinStudio he de decir que acabo de empezar a programar en c++ en la clase de informática y la verdad que lo hago muy largo y básico, otra cosa @Jes++, el profesor nos ha dicho que acabemos todos los cout con endl; y no sabía eso pero gracias, lo tendré en cuenta ^^

Mods, podéis cerrar el tema :3
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Gracias chicos!! Me ha sido muy util @KleinStudio he de decir que acabo de empezar a programar en c++ en la clase de informática y la verdad que lo hago muy largo y básico, otra cosa @Jes++, el profesor nos ha dicho que acabemos todos los cout con endl; y no sabía eso pero gracias, lo tendré en cuenta ^^

Mods, podéis cerrar el tema :3
Antes de cerrar el tema te digo: ¡ánimo!
La programación al principio se ve muy "sucia" y quizás complicada pero es igual que aprender un idioma, a la larga te empezará a salir solo y casi sin pensarlo.
Además una vez aprendas por completo un lenguaje te será muy fácil aprender otros y cada vez harás tu código más limpio.
 
Estado
Cerrado para nuevas respuestas.
Arriba