Hola muy buenas,
Tengo un problema y es que estoy uso de un switch todo bien, pero mi problema llega a repetir esa acción otra vez, osea cuando calcule el resultado, introduce otra letra y le repetirá de nuevo la accion del switch.
El problema está en la funcion Volver, en el while que se me repite hola sin parar y quiero que solo se repita 1 vez. Osea que muestre una vez solo HOLA.
#include <iostream>
#include <stdlib.h>
using namespace std;
char c;
int num1, num2, resultado;
void datos(){
cout << "Valor 1: ";
cin >> num1;
cout << "Valor 2: ";
cin >> num2;
system("cls");
}
void volver(){
while(c == 't'){
cout << "Hola" << endl;
}
}
void sumar(){
datos();
resultado = num1 + num2;
cout << "El resultado de la suma es: " << resultado << endl;
cout << "Si quiere volver al menu escriba la letra T: ";
cin >> c;
volver();
}
int main(){
cout << "Introduca la letra a: ";
cin >> c;
system("cls");
switch(c){
case 'a':
sumar();
break;
default:
cout << "La letra introducida es erronea" << endl;
}
cin.get();
return 0;
}
Cita de: TomasinSG en 28 Junio 2014, 15:10 PM
Tengo un problema y es que estoy uso de un switch todo bien, pero mi problema llega a repetir esa acción otra vez, osea cuando calcule el resultado, introduce otra letra y le repetirá de nuevo la accion del switch.
Para ese proposito simplemente deja asi la función volver
void volver()
{
if (c == 't'){
cout << "Hola\n" << endl;
sumar();
}
}
No es necesario el while
Saludos
Ese uso, Blaster, es un poco bizarro... estás creando una recursividad totalmente innecesaria y eso te puede acabar pasando factura al complicarse el ciclo de ejecución del programa.
A ver, TomasinSG, ¿Cual es la parte del código que se ha de repetir indefinidamente hasta que el usuario diga lo contrario? Es lógico pensar que el bucle while debe estar en dicha función, no en "volver":
void sumar( )
{
do
{
datos( );
resultado = num1 + num2; // por favor, NO USES VARIABLES GLOBALES!!!!!
cout << "..." << resultado << endl;
cout << "...";
cin >> c;
} while ( c != 'T' );
}
Si la comprobación c!='T' quieres encapsularla en una función, perfectamente puedes hacer que esa función devuelva true o false en función de si se debe volver al menú inicial o no...
void sumar( )
{
do
{
datos( );
resultado = num1 + num2; // por favor, NO USES VARIABLES GLOBALES!!!!!
cout << "..." << resultado << endl;
} while ( !volver( ) );
}
bool volver( )
{
cin >> c;
return c == 'T';
}