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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  While repetitivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: While repetitivo  (Leído 1,649 veces)
Yugget

Desconectado Desconectado

Mensajes: 50



Ver Perfil
While repetitivo
« en: 28 Junio 2014, 15:10 pm »

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.

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. char c;
  7.  
  8. int num1, num2, resultado;
  9.  
  10. void datos(){
  11. cout << "Valor 1: ";
  12. cin >> num1;
  13. cout << "Valor 2: ";
  14. cin >> num2;
  15. system("cls");
  16. }
  17.  
  18. void volver(){
  19. while(c == 't'){
  20. cout << "Hola" << endl;
  21. }
  22. }
  23.  
  24. void sumar(){
  25. datos();
  26. resultado = num1 + num2;
  27. cout << "El resultado de la suma es: " << resultado << endl;
  28. cout << "Si quiere volver al menu escriba la letra T: ";
  29. cin >> c;
  30. volver();
  31. }
  32.  
  33. int main(){
  34. cout << "Introduca la letra a: ";
  35. cin >> c;
  36. system("cls");
  37.  
  38. switch(c){
  39. case 'a':
  40. sumar();
  41. break;
  42.  
  43. default:
  44. cout << "La letra introducida es erronea" << endl;
  45. }
  46.  
  47. cin.get();
  48. return 0;
  49. }


En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: While repetitivo
« Respuesta #1 en: 28 Junio 2014, 15:44 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

Código
  1. void volver()
  2. {
  3.     if (c == 't'){
  4.       cout << "Hola\n" << endl;
  5.       sumar();
  6.     }
  7. }

No es necesario el while

Saludos


« Última modificación: 28 Junio 2014, 15:49 pm por Blaster » En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: While repetitivo
« Respuesta #2 en: 28 Junio 2014, 17:00 pm »

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":

Código
  1. void sumar( )
  2. {
  3.  do
  4.  {
  5.    datos( );
  6.    resultado = num1 + num2; // por favor, NO USES VARIABLES GLOBALES!!!!!
  7.    cout << "..." << resultado << endl;
  8.    cout << "...";
  9.    cin >> c;
  10.  } while ( c != 'T' );
  11. }

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...

Código
  1. void sumar( )
  2. {
  3.  do
  4.  {
  5.    datos( );
  6.    resultado = num1 + num2; // por favor, NO USES VARIABLES GLOBALES!!!!!
  7.    cout << "..." << resultado << endl;
  8.  } while ( !volver( ) );
  9. }
  10.  
  11. bool volver( )
  12. {
  13.  cin >> c;
  14.  return c == 'T';
  15. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Apagado aleatorio (bastante repetitivo)
Hardware
elsaz 8 4,032 Último mensaje 21 Octubre 2013, 00:24 am
por elsaz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines