Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: abad023 en 5 Diciembre 2011, 00:13 AM

Título: Paso de parametro por referencia
Publicado por: abad023 en 5 Diciembre 2011, 00:13 AM
Buenas, he hecho el siguiente programa, pero no se como pasarle el vector fibonnaci por referencia para que funcione correctamente...

#include <stdio.h>


void crearFibonnaci(int *fibonnaci){
   fibonnaci[0]=1;
   fibonnaci[1]=1;
   
   int i=2;
   while(i!=10){
      fibonnaci=fibonnaci[i-1]+fibonnaci[i-2];
      i++;
   }
}


void sumarFibonnaci(int *suma, int *fibonnaci){
   
   int i=0;
   while(i!=10){
      *suma+=fibonnaci;
      i++;
   }
}

main(){

int fibonnaci[10];
int suma=0;

   switch(fork()){
      case -1:
      printf("Error\n");
      exit(1);

      case 0:
      crearFibonnaci(fibonnaci);
      break;

      default:
      wait();
      sumarFibonnaci(&suma,fibonnaci);
      printf("Suma de Fibonnaci: %i\n",suma);         
      break;
   }

}

Gracias por vuestra ayuda.

Título: Re: Paso de parametro por referencia
Publicado por: adastra en 5 Diciembre 2011, 01:08 AM
case 0:
    [b]  crearFibonnaci(&fibonnaci);[/b]
      break;
Título: Re: Paso de parametro por referencia
Publicado por: abad023 en 5 Diciembre 2011, 01:36 AM
Nop :(
Sigue sin funcionar :(
Título: Re: Paso de parametro por referencia
Publicado por: naderST en 5 Diciembre 2011, 03:31 AM
Los vectores siempre se pasan por referencia, aquí tienes un error:


fibonnaci=fibonnaci[i-1]+fibonnaci[i-2];


Porque se supone que fibonnaci apunta a tu vector y tu estas cambiando a donde apunta fibonnaci.
Título: Re: Paso de parametro por referencia
Publicado por: abad023 en 5 Diciembre 2011, 22:11 PM
Y como deberia ponerlo??
Lo siento, pero soy bastante novato en programacion en c  :-X
Título: Re: Paso de parametro por referencia
Publicado por: x64core en 6 Diciembre 2011, 08:21 AM
veo muchos errores :P creo que es solo demostracion :P para usar arrays como parametros con como punteros de hecho se comportan casi como punteros por que apuntan a los elementos, tenes que hacerlo asi:

declaracion:
int main(){
int fibonnaci[10];
...
FUNCION(fibonnaci)
}

LA FUNCION:
FUNCION(int fibonnaci[10])
{
...
}

si es de varias dimenciones entonces tenes que especificar en el parametro de la funcion tambien, si es redimencionable
entonces usa un puntero y el parametro de la funcion debe ser un puntero :)