Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: cNoob en 20 Junio 2016, 22:00 pm



Título: Mas problemas con return.
Publicado por: cNoob en 20 Junio 2016, 22:00 pm
Hola!
Pues eso, hoy me puse a hacer un pequeño programa que suma y resta dos números y no me deja devolver a main dos valores de otra función con return.
Además de esto, me gustaría saber si hay alguna manera de que al final del programa, si el usuario elige repetir programa, el programa vuelva al principio (en este caso, a menu1, no se si me explico).
Un saludo!

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int Menu1 (int numero1, int numero2);
  5. void Menu2 (int suma,int resta);
  6. int MenuFinal ();
  7.  
  8. int main ()
  9. {
  10.    int numero1;//PRIMER NUMERO INTRODUCIDO
  11.    int numero2;//SEGUNDO NUMERO INTRODUCIDO
  12.    int suma;//PRODUCTO DE LA SUMA DE AMBOS
  13.    int resta;//PRODUCTO DE LA RESTA DE AMBOS
  14.    int opcion;//OPCION ELEGIDA (1 O 2) EN LA FUNCION "MENU FINAL"
  15.  
  16.    Menu1(numero1,numero2);
  17.    suma=numero1+numero2;
  18.    resta=numero1-numero2;
  19.    Menu2 (suma,resta);
  20.    opcion=MenuFinal();
  21.    //AQUI QUIERO PONER UN COMANDO PARA QUE VUELVA A "MENU1"
  22.  
  23.    return 0;
  24. }
  25.  
  26. int Menu1 (int numero1, int numero2)
  27. {
  28.    cout<<"Introduce dos numeros"<<endl<<"Numero 1: ";
  29.    cin>>numero1;
  30.    cout<<"Numero 2: ";
  31.    cin>>numero2;
  32.  
  33.    return numero1;
  34.    return numero2;
  35. }
  36.  
  37. void Menu2 (int suma,int resta)
  38. {
  39.    cout<<"Producto de la suma = "<<suma<<endl;
  40.    cout<<"Producto de la resta = "<<resta<<endl;
  41. }
  42.  
  43. int MenuFinal ()
  44. {
  45.    int opcion;
  46.    cout<<endl<<"---------------"<<endl<<"Final del programa, opciones:"<<endl;
  47.    cout<<"1-> Repetir programa."<<endl<<"2-> Salir del programa."<<endl;
  48.    cin>>opcion;
  49.    return opcion;
  50. }
  51.  


Título: Re: Mas problemas con return.
Publicado por: engel lex en 20 Junio 2016, 22:06 pm
creo que deberias hacerte un tutorial de c++ en lugar de hacer estas locuras xD

Menu1 se esta simplemente llamando,aunque retornara, nadie lo capturará

segundo,  cuando se toca un return,  se sale de la función.. fin... no se hará absolutamente mas nada, luego del return ejecutarse el resto  es espacio muerto (incluyendo otros return)

lo que tu buscas se llaman "valores por referencia" no pasas el valor, sino el apuntador a la variable


sobre el volver, basta con un do-while

Código
  1. do{
  2.  
  3. //lo que vayas a hacer
  4.  
  5. }while( MenuFinal() == 1);

solo finalizará si menú final retorna diferente de 1, si no, repite


Título: Re: Mas problemas con return.
Publicado por: cNoob en 20 Junio 2016, 22:14 pm
Respondiendo a lo primero hahaha; en verdad el problema me ha dado en otro programa mas grande pero para no hacer un lio he preferido hacer este miniprograma para poder preguntar sin que el que me responda se tenga que leer un programa mas tocho hahaha.
A lo segundo, pero no hay forma de retornar dos valores y que capture los dos? La otra solución que se me ocurrió fue dividir la función en dos y que cada una devuelva un valor, pero sería muy engorroso... Y lo tercero no lo entendí muy bien, pero lo ojeare en google a ver si encuentro algo  ;D


Título: Re: Mas problemas con return.
Publicado por: engel lex en 20 Junio 2016, 22:26 pm
lo de la función no es necesario retornar busca en Google "c++ parámetros por referencia"

y has un tutorial de c++ desde 0 porque estas cometiendo errores de cosas que normalmente explican... no tiene sentido que te des con cada detalle del lenguaje preguntando error por error...