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

mas de un retorno en una funcion

Estas en el tema de mas de un retorno en una funcion en el foro de C/C++ en Foros del Web. hola a todos! estoy por aca porque tengo un problemilla que al parecer no es tan complicado pero para mi lo ha sido ...soy un ...
  #1 (permalink)  
Antiguo 26/06/2011, 21:28
 
Fecha de Ingreso: junio-2011
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
mas de un retorno en una funcion

hola a todos! estoy por aca porque tengo un problemilla que al parecer no es tan complicado pero para mi lo ha sido ...soy un novato de c!
tengo la siguiente funcion:

int *suma_resistencias(int *b,int x)
{
int s1=0,s2=0,s3=0,s4=0,s5=0,i;

if(x==4)
{for(i=0;i<x;i++){s1=s1+b[i];}}


else if(x==7)
{for(i=0;i<x-3;i++){s1=s1+b[i]; }
for(i=3;i<x;i++){s2=s2+b[i]; }

}

else if(x==10)
{for(i=0;i<x;i++){s1=s1+b[i]; }
for(i=3;i<x+3;i++){s2=s2+b[i]; }
for(i=6;i<x-6;i++){s3=s3+b[i]; }

}

else if(x==13)
{for(i=0;i<x;i++){s1=s1+b[i]; }
for(i=3;i<x+3;i++){s2=s2+b[i]; }
for(i=6;i<x-6;i++){s3=s3+b[i]; }
for(i=9;i<x-3;i++){s4=s4+b[i]; }

}

else if(x==16)
{for(i=0;i<x;i++){s1=s1+b[i]; }
for(i=3;i<x+3;i++){s2=s2+b[i]; }
for(i=6;i<x-6;i++){s3=s3+b[i]; }
for(i=9;i<x-3;i++){s4=s4+b[i]; }
for(i=12;i<=x-1;i++){s5=s5+b[i]; }

}

y necesito sacar por ejmplo si se cumple el elseif(x==13) poder sacar los valores s1,s2,s3,s4 fuera de la funcion para luego ocuparlos!

muchas gracias espero puedan ayudarme!
  #2 (permalink)  
Antiguo 26/06/2011, 22:47
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: mas de un retorno en una funcion

En tu función no veo que variable retornas, pero si deseas retornar s1,s2,s3,s4; puedes hacer que pasen por referencia a la función y así te evitas de retornar un tipo "complejo" (entre comillas).
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #3 (permalink)  
Antiguo 27/06/2011, 10:55
Avatar de afrika026  
Fecha de Ingreso: junio-2011
Mensajes: 85
Antigüedad: 12 años, 10 meses
Puntos: 19
Respuesta: mas de un retorno en una funcion

crea una estructura con un array de enteros haciendo lo siguiente;
---------------------------------------------------------------------------------------------
•creas la estructura:

struct _MisResistencias {
int valores[4];
} MisResistencias;
---------------------------------------------------------------------------------------------
•luego la funcion "int *suma_resistencias(int *b,int x)" la cambias así;

"struct suma_resistencias(int *b,int x)"

--------------------------------------------------------------------------------------------
y agregas dentro de cada condicional if lo siguiente:

MisResistencias.valores[0]=s1;
MisResistencias.valores[1]=s2;
MisResistencias.valores[2]=s3;
MisResistencias.valores[3]=s4;
return MisResistencias;
--------------------------------------------------------------------------------------------

• Entonces la funcion te retorna la estructura con los 4 valores que te interesan.
  #4 (permalink)  
Antiguo 27/06/2011, 11:00
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: mas de un retorno en una funcion

Una posible solucion es hacer un arreglo y pasarlo por argumento. De la misma forma que pasas a b para realizar las cuentas podes a pasar un vector s para eso tambien.

Otra seria hacer un struct:

Código C:
Ver original
  1. struct datos {int s1,s2,s3,s4,s5}
  2.  
  3. struct datos *suma_resistencias(int *b,int x) {
  4. struct datos d;
  5. d.s1= d.s2 = d.s3 = d.s4 = d.s5 = 0;
  6. // realizamos todas las cuentas
  7. return d;
  8.  
  9. }
  #5 (permalink)  
Antiguo 27/06/2011, 12:44
 
Fecha de Ingreso: junio-2011
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: mas de un retorno en una funcion

ya oie men (afrika) mira ise lo que me dijiste ...pero me tira un error porque al cambiar "int *suma_resistencias(int *b,int x) por "struct suma_resistencias(int *b,int x)" me tira el siguiente error : expected identifier or '(' before int , que yo creo que es porque estas cmbiando de una estructura a una funcion lo que implica que no es la forma de escribir una estructura

muchas gracias

Última edición por dimendoza; 27/06/2011 a las 14:52

Etiquetas: funcion
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 06:53.