Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Capturar un valor de una funcion

Estas en el tema de Capturar un valor de una funcion en el foro de C/C++ en Foros del Web. buenas a todos , disculpen el atrevimiento y la novatada , quisiera saber como capturar el valor de una funcion y visualizarlo desde otra , ...
  #1 (permalink)  
Antiguo 22/10/2015, 23:14
 
Fecha de Ingreso: febrero-2015
Ubicación: caracas
Mensajes: 22
Antigüedad: 9 años, 2 meses
Puntos: 0
Capturar un valor de una funcion

buenas a todos , disculpen el atrevimiento y la novatada , quisiera saber como capturar el valor de una funcion y visualizarlo desde otra , es decir , quiero una funcion donde el usuario suministre un valor , y la otra funcion seria mostrar en pantalla el valor que surge en la otra funcion , pls un ejemplo sencillo en c++ me ayudaria mucho.
  #2 (permalink)  
Antiguo 23/10/2015, 00:04
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Capturar un valor de una funcion

Sin ánimo de que suene ofensivo, si tienes esa duda lo primero que has de hacer es aprender fundamentos de C++ (o de programación) porque eso es un concepto básico.
Si de verdad quieres aprender (y disfrutar o no sufrir al menos) con la programación, no deberías intentar atajos que sólo te van a causar problemas y frustraciones.

Pero como no sé cual es tu caso, te pongo un ejemplo muy básico.

Las funciones tienen tipos, que será igual al valor que retornen.
Así una función int mifuncion(); retornará un valor int por medio de un return.
La excepción son las funciones de tipo void (acciones) que no retornan nada.

Un ejemplo:
Código C++:
Ver original
  1. int duplica(int n)
  2. {
  3.     return 2*n;
  4. }
Esto es una función que recibe un parámetro de tipo int y devuelve un valor igual a ese parámetro multiplicado x 2.

y

Código C++:
Ver original
  1. void muestra(int n)
  2. {
  3.     cout<<"El valor es: "<<n<<endl;
  4. }

Una función void que muestra un valor y no retorna nada



Un ejemplo de uso:
Código C++:
Ver original
  1. int a=2;
  2. int b= duplica(a); //llamo a la primera función
  3. muestra (b); //llamo a la segunda
__________________
Mi calculadora en Qt
  #3 (permalink)  
Antiguo 23/10/2015, 15:23
 
Fecha de Ingreso: febrero-2015
Ubicación: caracas
Mensajes: 22
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Capturar un valor de una funcion

Mano lo que yo quisiera es que el valor sea suministrado por el usuario , desde una funcion , me explico , seria algo asi :

void captura() {

int a;
cout<<"ingrese su edad";
cin>>a;
}

yo quiero es que ese valor de la variable a , pueda ser modificada desde otra funcion , una funcion vista de esta manera .

void mostrar()
{
cout<<a;
}
tan solo quiero saber es como pasar un valor, que esta proporcionado directamente desde una funcion, y capturarlo desde otra funcion .
  #4 (permalink)  
Antiguo 23/10/2015, 16:05
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Capturar un valor de una funcion

Bufff...el ámbito de la variable "a" en tu ejemplo se restringe a la función.
Si no quieres una función con valor de retorno, sólo se me ocurren dos cosas:

Que "a" sea una variable global definida fuera de la función:
Código C++:
Ver original
  1. int a;
  2. void captura() {
  3.  
  4. //int a; aqui ya no se define para no solapar a la variable global
  5. cout<<"ingrese su edad";
  6. cin>>a;
  7. }
  8.  
  9. void mostrar()
  10. {
  11. cout<<a;
  12. }
  13.  
  14. int main()
  15. {
  16.     captura():
  17.     mostrar();
  18.     return 0;
  19. }

Otra solución que se puede aproximar a lo que buscas es llamar a la función dentro de la otra:

Algo así:

Código C++:
Ver original
  1. int captura()
  2.     {
  3.         int a;
  4.         cout<<"Ingrese su edad ";
  5.         cin>>a;
  6.         return a;
  7.     };
  8.  
  9.     void mostrar()
  10.     {
  11.         cout<<"La edad es: "<<captura();
  12.     };
  13.  
  14. int main()
  15. {
  16.     mostrar();
  17.  
  18.     return 0;
  19. }
__________________
Mi calculadora en Qt
  #5 (permalink)  
Antiguo 24/10/2015, 05:04
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 14 años, 7 meses
Puntos: 12
Respuesta: Capturar un valor de una funcion

Hola

Otra forma sin recurrir a variables globales es declarando la variable en el main, usar el valor de retorno de capturar para iniciarla y pasarla a la función mostrar:

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int capturar()
  6. {
  7.     int a;
  8.     cout << "Ingrese su edad ";
  9.     cin >> a;
  10.     return a;
  11. };
  12.  
  13. void mostrar(int e)
  14. {
  15.     cout << "La edad es: " << e << endl;
  16. };
  17.  
  18. int main(int argc, char **argv)
  19. {
  20.     int edad = capturar();
  21.    
  22.     mostrar(edad);
  23.    
  24.     return 0;
  25. }

Un saludo
  #6 (permalink)  
Antiguo 26/10/2015, 02:50
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Capturar un valor de una funcion

Buenas.

Quizás la solución más flexible de todas sea la propueta por jc_moj.

Lo ideal es evitar el uso de variables globales en la medida de lo posible.

Si por cuestiones de legibilidad es necesario usar variables globales dentro de C++ y tienes la suerte de que todas las funciones que hacen uso de dicha variable se encuentran implementadas dentro del mismo CPP puedes usar un pequeño truco para evitar colisiones fuera del cpp:

test.h
Código C++:
Ver original
  1. #pragma once
  2.  
  3. int RecuperarValor();
  4.  
  5. void EstablecerValor(int valor);

test.cpp
Código C++:
Ver original
  1. namespace
  2. {
  3.   int _valor = 0;
  4. }
  5.  
  6. int RecuperarValor()
  7. { return _valor; }
  8.  
  9. void EstablecerValor(int valor)
  10. { _valor = valor; }

main.cpp
Código C++:
Ver original
  1. #include "test.h"
  2.  
  3. int main()
  4. {
  5.   EstablecerValor(123);
  6.  
  7.   int _valor = 444;
  8.  
  9.   std::cout << RecuperarValor(); // Escribe 123
  10.   std::cout << _valor << std::endl; // Escribe 444
  11. }

Como veis, el namespace no tiene un nombre asociado, es lo que se conoce como namespace anónimo. Sus características son las siguientes:
  • Como no tiene nombre no puede ser referenciado fuera del archivo que lo usa, por lo que las variables globales declaradas dentro de dicho namespace no serán accesibles fuera del fichero donde se encuentran.
  • Al no tener nombre no es necesario añadir ningún prefijo para usar lo que se encuentre almacenado dentro de dicho namespace.

PD.: Si os molan estos trucos avisadme y os digo donde podéis hacer donaciones voluntarias jejejejeje

Un saludo

Etiquetas: funcion, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:27.