error used prior to declaration

Iniciado por MasterPunk, 4 Enero 2012, 01:56 AM

0 Miembros y 1 Visitante están viendo este tema.

MasterPunk

Hola, podeis decirme porqué este código está mal?

Código (cpp) [Seleccionar]

int main() {
  ....

  int valor_1 = 1500;
  int valor_max_1 = 1000;

  valor = v_max(valor_1, valor_max_1);
}

...

int v_max(valor, valor_max){
  if(valor > valor_max)
     return valor_max;
  if(valor < 0)
     return 0;
  return valor;
}


A mi me parece que está bien.. aunque tampoco es que sepa mucho =S
Gracias

KaL3o

Los compiladores toman tu codigo desde arriba hacia abajo.

Por lo cual cuando llega a la funcion, te sale el error del titulo del tema. Porque el compilador no conoce que funcion es, para implementar la funcion despues del main debes declararla antes del main.

Código (cpp) [Seleccionar]

int v_max(int, int); //aqui le dices al compilador que esta funcion existe pero que luego la implementaras

int main()
{
    int valor_1 = 1500;
    int valor_max_1 = 1000;
    int valor;
    valor = v_max(valor_1, valor_max_1); //supongo que la variable valor si la has declarado, en caso que no, entonces debes declararla
}

int v_max(int valor, int valor_max)//las funciones tanto como los nombres de variables deben tener un nombre acorde a lo que hacen. Los parametros [b]no[/b] necesariamente deben tener el mismo nombre de las variables que usamos en nuestro programa principal.
{
    if(valor > valor_max)
        return valor_max;
    if(valor < 0)
        return 0;
    return valor;
}

En comentarios te coloque algunas aclaraciones :D

Otra alternativa es que puedes implementar la función antes del main
Código (cpp) [Seleccionar]

int v_max(int x, int y)//cambie el nombre a los parametros para mostrar lo q habia comentado anterior mente
{
    if(x > y)
        return y;
    if(x < 0)
        return 0;
    return x;
}

int main()
{
    int valor_1 = 1500;
    int valor_max_1 = 1000;
    int valor;

    valor = v_max(valor_1, valor_max_1);
}


Espero te sea de ayuda

Salu2 :)
Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.

alexis33de

Simplemente declara tu funcion primero y luego viene el main
Código (cpp) [Seleccionar]
int v_max(valor, valor_max){
if(valor > valor_max)
    return valor_max;
if(valor < 0)
    return 0;
return valor;
}
int main() {

int valor_1 = 1500;
int valor_max_1 = 1000;
int valor;
valor = v_max(valor_1, valor_max_1);
}