Duda con un pequeño programa de C++

Avisos

Like Tree4Gracias
  • 1 Post By KleinStudio
  • 1 Post By Jes
  • 2 Post By KleinStudio
Tema cerrado
 
Herramientas Desplegado
  #1  
27/10/2017
Duda Duda con un pequeño programa de C++
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!
  #2  
27/10/2017
Predeterminado Respuesta: Duda con un pequeño programa de C++
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;
    }
  }
}
Gracias: Keux
  #3  
27/10/2017
Predeterminado Respuesta: Duda con un pequeño programa de C++
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";
        }
    }
}
Gracias: Keux

Última edición por Jes; 27/10/2017 a las 18:49
  #4  
27/10/2017
Predeterminado Respuesta: Duda con un pequeño programa de C++
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
  #5  
27/10/2017
Predeterminado Respuesta: Duda con un pequeño programa de C++
Dicho por Keux Ver mensaje
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.
Gracias: Keux y Jes
Tema cerrado

Etiquetas
c++

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 13:14.