C/Visual C - Funcion que devuelva un arreglo

 
Vista:

Funcion que devuelva un arreglo

Publicado por Marcos (1 intervención) el 14/09/2008 02:19:14
Amigos!
Les cuento, necesito crear una funcion que reciba un arreglo como parámetro por referencia y que devuleva otro arreglo.
El programa es para un microcontrolador, y por eso necesito ahorrar tanta memoria, basicamente, no puedo andar creando arreglos así como así. Por supuesto la solución a esto es usar punteros.
Este esta es la función que estoy haciendo:

int *derivando(float &vectores);

//Necesito devolver un vector: derivada binarizada!
int *derivando(float &vectores){
int i;
float temp;

for(i=0;i<511;i++){ //Derivando y binarizando
temp = vectores[i+1] - vectores[i];
if (temp > 0) {
der1bin[i] = 1;
} else {
der1bin[i] = 0;
}
}
der1bin[511] = der1bin[510]; //agregamos un valor a la derivada
return der1bin;
}

No se por que, pero mi gcc no me deja compilar y me da:
test.c:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
test.c:11: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
siendo, las líneas 4 y 11 el prototipo y la definición de la función dervando.
Alguno tiene idea de que estoy haciendo mal?
se les ocurre otra forma de solucionar mi problema?

desde ya muchas 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

RE:Funcion que devuelva un arreglo

Publicado por Eduardo Negrete (76 intervenciones) el 14/09/2008 21:11:45
Que tal!!!

Pues mira en primer lugar dices que no puedes andar creando arreglos asi como asi:

int *derivando(float &vectores){
int i;
float temp;

for(i=0;i<511;i++){ //Derivando y binarizando
temp = vectores[i+1] - vectores[i];
if (temp > 0) {
der1bin[i] = 1;
} else {
der1bin[i] = 0;
}
}
der1bin[511] = der1bin[510]; //agregamos un valor a la derivada
return der1bin;
}

Por que te dijo esto, por que dices una cosa y haces otra.

for(i=0;i<511;i++){ //Derivando y binarizando

tienes este for ya con un limite establecido que es 511
yo usaria un puntero en el siguiente caso

for(i=0;i<tamanio;i++){ //Derivando y binarizando

donde tamanio puede valer: 512, 1024, 2048 el valor que yo le ponga

La variable der1bin

yo no la veo declarada en tu funcion derivada. si estas haciendo lo que pienso que estas haciendo. Tu variable der1bin la estas declarando como global y no tiene caso que tu funcion devuelva el puntero.

ahora el prototipo de funcion.

int *derivando(float &vectores);

en el main la usarias de la siguiente forma

int main()
{
float value;
int *ptr;
ptr = derivando(&value); // Valor por referencia

return 0;
}

Si lo que quieres es enviar un puntero se haria de la siguiente forma

int *derivando(float *vectores);

en el main la usarias de la siguiente forma

int main()
{
float *value;// debes asignar memoria
int *ptr;
ptr = derivando(value);

return 0;
}

Si estoy mal corriganme!!!!!
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