Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/09/2012, 14:16
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: error [Linker error] undefined reference to `mayoritario(float, float)'

En el prototipo se espera dos floats desreferenciados, en los argumentos de la funcion se espera un float desreferenciado que por defecto será el elemento nº10 (en base a 0) de un supuesto array, y en la implementacion de la funcion se manipula el argumento 'vector' como si realmente fuese un vector; en la llamada a la funcion envias un unico elemento desreferenciado que es el elemento nº10 del array de floats declarado en el main. No ves algo raro en todo esto?

La funcion espera que le envies un array de floats, es decir una referencia a una lista tal como la declaras en el main; esta lista puedes declararla de dos formas: cerrada o abierta; el el codigo que colgaste está cerrada, es una lista de 10 floats, que sería lo mismo que hacer una memoria dinamica para 10 floats y que seguramente en ese caso habrías visto mejor lo que estas manipulando:

Código:
float vector[10];

float *vector = new float[10];
delete []vector;
Ambos casos creas un array de 10 floats (el segundo al ser memoria dinamica tienes que liberarla tu mismo al finalizar el uso). La funcion espera trabajar con el array, por lo que espera usar como minimo float *vector, que es el propio array y se pasa por referencia; entonces el prototipo de tu funcion debe ser

Código:
bool mayoritario (float *, float);
Y la funcion debe estar declarada tal como:

Código:
bool mayoritario (float *vector, float n) {
}
Y ahora seguramente ya ves que es lo que tienes que enviar en la llamada a la funcion:

Código:
mayoritario(vector, n);
Observa que la funcion espera trabajar con una referencia porque el objeto no es unitario (es una lista), el objeto que creas en el main es una lista (tanto si la craste de forma estatica como si no) que por lo tanto ya es una referencia, y por eso puedes enviarlo directamente.

Saludos
vosk