Foro de elhacker.net

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
Código:
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:

Código
  1. fibonnaci=fibonnaci[i-1]+fibonnaci[i-2];
  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 :)