Dev - C++ - funcion con varios parametros de salida

   
Vista:

funcion con varios parametros de salida

Publicado por jorge (2 intervenciones) el 01/11/2014 13:27:59
buenas, estoy intentando crear una funcion que me devuelva dos parametros de salida, pero no lo consigo, vengo de otros lenguajes y estos si que me lo permiten pero en c++ no lo consigo, he estado buscando por ahi y solo veo funciones que me debuelven un solo parametro,
mi pregunta es, como podria crear una funcion que me debuelva dos parametros?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
 
  int sumar (int a,int b){
      int c,m;
      m=a+b;
      c=a*b;
     return (m,c);
}
 
int main(){
     int a,b,s,p;
     printf("valor de a: ");
     scanf("%d",&a);
     printf("valor de b: ");
     scanf("%d",&b);
     (s,p)=sumar(a,b);
     printf("suma: %d\n",s);
    printf("producto: %d\n",p);
     system ("pause");
}

lo que intento es que en las variables s y p se me almacenan las salidas de sumar(), pero solo se me almacena una bien (p) y la otra me da un numero que no entiendo muy bien, la salida que obtengo es:

valor de a: 5
valor de b: 7
suma:2
producto: 35

a que se debe ese 2?como podria hacer para obtener varios datos de salida?
gracias
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 JuanC

funcion con varios parametros de salida

Publicado por JuanC juanc2942@gmail.com (35 intervenciones) el 01/11/2014 13:50:45
una función sólo devuelve un valor (o ninguno)
la solución es pasar valores por referencia:

1
2
3
4
5
6
7
void sumar (int a,int b, int *s, int *p){
int c,m;
m=a+b;
c=a*b;
*s = m;
*p = c;
}

llamada a la función:
1
sumar(a, b, &s, &p);

otra opción es crear un tipo propio de dato (usar struct por ejemplo) y devolver ese tipo...

Saludos, desde Baires, JuanC
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