Dev - C++ - Pasar un valor de una funcion a otra funcion

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Pasar un valor de una funcion a otra funcion

Publicado por Aurora (3 intervenciones) el 15/11/2020 03:38:06
Hola, mi problema es que 1 valor que tengo en una función la quiero pasar a otra función, pero no se como, quiero hacer algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int serie ();
int respuesta (int V);
int main (){
	cout<<serie();
	cout<<respuesta(serie());
    getch ();
    return 0;
}
int serie (){
	int x,x1;
	cout<<"Ingresa valor" <<endl;
	cin>>x;
	x1=x+10;
	cout<<x1<<endl;
	return x1;
}
int respuesta (int V){
	int x2=0;
	x2=V+5;
	return x2;
}

quiero hacer algo asi en mi codigo original pero no puedo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
using namespace std;
int serie ();
int paralelo ();
int resultado (int& a,int& b);
int main (){
	int opcion,regresar,a;
    system("color 71");
    do{
		system("cls");
    cout<<"Hola, Vamos a calcular la corriente electrica de tu circuito" <<endl;
   	 	cout<<"Por favor introduce la opcion que deseas:" <<endl<<endl;
    	cout<<"1.Ingresar resistencia en serie \n2.Ingresar resistencia en paralelo \n3.Obtener resultado de las resistencias y corriente \n4.Salir" <<endl;
    	cin>>opcion;
    	if(opcion!=4){
    	switch (opcion){
			case 1:
				cout<<serie();
				cout<<"1.Regresar \n2.Salir" <<endl;
				cin>>regresar;
				break;
				case 2:
                    cout<<paralelo();
					cout<<"1.Regresar \n2.Salir" <<endl;
					cin>>regresar;
					break;
					case 3:
						cout<<"h";
						break;
						default: cout<<"Gracias por utilizarme :)" <<endl;
	}//llave de menu principal
}else cout<<"Hasta luego"<<endl;//llave de cierre de if
}while (regresar!=2);//llave de cierre de do
    getch ();
    return 0;
}//Lla ve de cierre de funcion principal
int serie (){
	int x1=10,otra,x;
	do{
        system("cls");
        cout<<"Ten en cuenta que las resistencias en paralelo solo puedes utilizar los valores siguientes:" <<endl;
		cout<<"100 Ohm \n220 Ohm \n330 Ohm \n1000 Ohm \n2200 Ohm \n3300 Ohm"<<endl;
		cout<<"Ingresa el valor de tu resistencia:"<<endl;
		cin>>x;
		x1=x+x1;
		cout<<"Añadir otra: \n1.Si \n2.No" <<endl;
		cin>>otra;
	}while (otra!=2);//cierre de do
	return x1;
}//llave de cierre de funcion serie
 
int paralelo (){
	int x2=10,x,otra;
	do{
        system("cls");
		cout<<"Ingresa el valor de tu resistencia:"<<endl;
		cin>>x;
		x2=(1/x)+(1/x2);
		cout<<"Añadir otra: \n1.Si \n2.No" <<endl;
		cin>>otra;
	}while (otra!=2);//cierre de do
	return x2;
}//llave de cierre de funcion paralelo
 
int resultado (int& a, int& b){
	int xr,I;
	xr=a+b;
	I=10/a;
	cout<<"El valor total de las resistencias es de:" <<endl;
	cout<<xr;
	cout<<"El valor de la corriente es:" <<endl;
	cout<<I;
 
	return xr,I;
}//llave de cierre de resultado
Necesito que el resultado de las operaciones que realice en serie(x1) y en paralelo(x2) se pasen a la función resultado para poder hacerles otra operacion.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Pasar un valor de una funcion a otra funcion

Publicado por Rodrigo (539 intervenciones) el 15/11/2020 05:36:12
No uses la referencia (remueve el & de los parametros de la funcion resultado).
Solo puedes retornar 1 solo valor en una funcion, no se si tenias otra intencion con lo que pones en la linea 79?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Pasar un valor de una funcion a otra funcion

Publicado por Aurora (3 intervenciones) el 15/11/2020 17:36:10
Okay por referencia no, lo que necesito es que los resultados x1 que esta en la función series y x2 que esta en la función paralelo, los tengo que pasar a la función resultados para después hacerles otra operación , pero solo quiero pasar esos resultados, no quiero pasar toda la función, ya que lo he intentado pero me manda toda la función.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Pasar un valor de una funcion a otra funcion

Publicado por Rodrigo (539 intervenciones) el 15/11/2020 18:04:54
Las variables dentro de las funciones solo viven dentro de ellas, otras pueden obtener sus valores fuera de ellas.
Podrias hacer:

Definir en el main las variables x1 y x2 (o cualquier otro nombre) y luego asignarles el retorno de las funciones:

x1 = serie();
x2 = paralelo();

la funcion serie y paralelo pueden seguir como estan, las variables dentro de ellas, con nombre x1 y x2 son otras variables, podrian tener otro nombre, si quieres.

Luego, en el main, pasar x1 y x2 a la funcion resultado, ahora si manteniendo el & para referencia y dentro de la funcion, lo que hagas a las variables a y b le pasara tambien a las variables x1 y x2 de afuera del main.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Pasar un valor de una funcion a otra funcion

Publicado por Aurora (3 intervenciones) el 15/11/2020 19:12:57
Lo intente pero aun me manda toda la función, no se en que este mal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
using namespace std;
int serie ();
int paralelo ();
int resultado (int& a,int& b);
int main (){
	int x1;
	int x2;
	int opcion,regresar,a;
    system("color 71");
    do{
		system("cls");
    cout<<"Hola, Vamos a calcular la corriente electrica de tu circuito" <<endl;
   	 	cout<<"Por favor introduce la opcion que deseas:" <<endl<<endl;
    	cout<<"1.Ingresar resistencia en serie \n2.Ingresar resistencia en paralelo \n3.Obtener resultado de las resistencias y corriente \n4.Salir" <<endl;
    	cin>>opcion;
    	if(opcion!=4){
    	switch (opcion){
			case 1:
				cout<<serie();
				cout<<"1.Regresar \n2.Salir" <<endl;
				cin>>regresar;
				break;
				case 2:
                    cout<<paralelo();
					cout<<"1.Regresar \n2.Salir" <<endl;
					cin>>regresar;
					break;
					case 3:
                        x1 = serie();
                        x2 = paralelo();
						cout<<resultado(x1,x2);
						break;
						default: cout<<"Gracias por utilizarme :)" <<endl;
	}//llave de menu principal
}else cout<<"Hasta luego"<<endl;//llave de cierre de if
}while (regresar!=2);//llave de cierre de do
    getch ();
    return 0;
}//Lla ve de cierre de funcion principal
int serie (){
	int x1=10,otra,x;
	do{
        system("cls");
        cout<<"Ten en cuenta que las resistencias en paralelo solo puedes utilizar los valores siguientes:" <<endl;
		cout<<"100 Ohm \n220 Ohm \n330 Ohm \n1000 Ohm \n2200 Ohm \n3300 Ohm"<<endl;
		cout<<"Ingresa el valor de tu resistencia:"<<endl;
		cin>>x;
		x1=x+x1;
		cout<<"Añadir otra: \n1.Si \n2.No" <<endl;
		cin>>otra;
	}while (otra!=2);//cierre de do
 
	return x1;
}//llave de cierre de funcion serie
 
int paralelo (){
	int x2=10,x,otra;
	do{
        system("cls");
		cout<<"Ingresa el valor de tu resistencia:"<<endl;
		cin>>x;
		x2=(1/x)+(1/x2);
		cout<<"Añadir otra: \n1.Si \n2.No" <<endl;
		cin>>otra;
	}while (otra!=2);//cierre de do
	return x2;
}//llave de cierre de funcion paralelo
 
int resultado (int& a, int& b){
	int xr,I;
	xr=a+b;
	I=10/a;
	cout<<"El valor total de las resistencias es de:" <<endl;
	cout<<xr;
	cout<<"El valor de la corriente es:" <<endl;
	cout<<I;
}//llabe de cierre de resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Pasar un valor de una funcion a otra funcion

Publicado por Rodrigo (539 intervenciones) el 15/11/2020 20:02:37
No mr queda claro lo que quieres porque dices "aun me manda toda la función"
A que te refieres que "te manda" ?

Si invocas la funcion y la funcion tiene prints entre las cosas que hace, no puedes evitar que la funcion imprima cuando la invocas.

Cuando invocas una funcion, la funcion retorna algun valor, en tu caso, la funcion resultado no parece estar retornando un valor conocido.
No se que esperas retornar, pero para que entiendas un poco mas agrega un return 789 como utima instruccion de la funcion resultado.
Si quieres otro valor como resultado reemplaza 789 por otro valor u otra expresion.

Ahora tal vez quiers cambiar el valor de x1 y x2 como dijiste antes?
En este caso, cambia los valores que tienen a y b dentro de la funcion resultado e imprime los valores de x1 y x2 afuera en el main, para que veas que estos cambian del mismo modo que a y b.

Entonces, para que entiednas mas:

- en el main() despues de escribir resultado escribe los valores de a y b
- en la funcion resultado agrega estas 3 lineas al final
a = 123'
b = 456;
return 789;
y verifica:
- que x1 y x2 cambiaron a 123 y 456
- que la funcion retorna 789
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Pasar un valor de una funcion a otra funcion

Publicado por Alfil (1444 intervenciones) el 15/11/2020 20:05:25
Tu código corregido, revisa que el resultado sea el esperado, pienso que las variables deberían ser float en vez de int, te he cambiado alguna. Me he limitado a hacer funcionar el código con el esquema que creo has buscado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <cmath>
 
using namespace std;
 
int serie();
int paralelo();
int resultado(int a,int b);
 
int main()
{
	int x1, x2;
	char opcion;
 
    system("color 71");
 
    do{
		system("cls");
 
        cout << "Hola, Vamos a calcular la corriente electrica de tu circuito" << endl;
   	 	cout << "Por favor introduce la opcion que deseas:" << endl;
    	cout << "\n1.Ingresar resistencia en serie"
             << "\n2.Ingresar resistencia en paralelo"
             << "\n3.Obtener resultado de las resistencias y corriente"
             << "\n4.Salir"
             << "\n\nOPCION (1-4): ";
 
    	cin >> opcion;
 
    	switch (opcion)
    	{
			case '1':
			    x1 = serie();
				cout << "\nSerie: " << x1 << endl
                     << "\nPULSE CUALQUIER TECLA PARA CONTINUAR" << endl;
                getch();
				break;
 
            case '2':
                x2 = paralelo();
                cout << "\nParalelo: " << x2 << endl
                     << "\nPULSE CUALQUIER TECLA PARA CONTINUAR" << endl;
                getch();
                break;
 
            case '3':
                resultado(x1, x2);
                cout << "\nPULSE CUALQUIER TECLA PARA CONTINUAR" << endl;
                getch();
                break;
 
            case '4':
                cout << "\n\nFIN DEL PROGRAMA" << endl;
                break;
 
            default:
                cout << "\n\nOPCION NO VALIDA" << endl
                     << "PULSE CUALQUIER TECLA PARA CONTINUAR" << endl;
                getch();
                break;
 
        }
    } while (opcion != '4');
 
    return 0;
}
 
int serie()
{
	int x1 = 0, x, opcion;
 
	do{
        system("cls");
 
        cout << "\nTen en cuenta que las resistencias en paralelo solo puedes utilizar los valores siguientes: " << endl;
		cout << "\n100 Ohm \n220 Ohm \n330 Ohm \n1000 Ohm \n2200 Ohm \n3300 Ohm" << endl << endl;
		cout << "Ingresa el valor de tu resistencia: ";
 
		cin >> x;
 
		x1 += x +10;
 
		cout << "\nAñadir otra:"
             << "\n1.Si"
             << "\n2.No"
             << "\n\nOPCION: ";
 
		cin >> opcion;
 
	} while (opcion == 1);
 
	return x1;
}
 
int paralelo()
{
	float x2 = 0.0f;
	int x, opcion;
 
	do{
        system("cls");
 
		cout << "\nIngresa el valor de tu resistencia: ";
		cin >> x;
 
		x2 += 10.0f;
		x2 += (1/float(x)) + (1/x2);
 
		cout << "\nAñadir otra:"
             << "\n1.Si"
             << "\n2.No"
             << "\n\nOPCION: ";
 
		cin >> opcion;
 
	} while (opcion == 1);
 
	return int(x2);
}
 
int resultado(int a, int b)
{
	int xr;
	float I;
 
	xr = a + b;
	I = 10.0f / a;
 
	cout << "\nEl valor total de las resistencias es de: " << xr;
	cout << "\nEl valor de la corriente es: " << I << endl;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar