Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: muymuyperdido en 23 Diciembre 2012, 18:32 pm



Título: No reconoce las variables en funciones
Publicado por: muymuyperdido en 23 Diciembre 2012, 18:32 pm
Tengo un programa con varias funciones, pero al compilar me da error
"'lo que sea" undeclared (first used in this function)

void recuento (int t[N][M], int k, char dt[]);


y en el main está puesto
recuento(train,k,datosout);    estando todo esto declarado en el main.

No entiendo por qué da error si se supone que con la llamada se declaran las variables dentro de la funcion :|


Título: Re: No reconoce las variables en funciones
Publicado por: durasno en 23 Diciembre 2012, 18:58 pm
subi el codigo completo. Saludos


Título: Re: No reconoce las variables en funciones
Publicado por: twins en 23 Diciembre 2012, 21:45 pm
Si sube el codigo porfavor, porque asi no es mucho lo que podemos hacer  :-\


Título: Re: No reconoce las variables en funciones
Publicado por: Gallu en 23 Diciembre 2012, 22:42 pm
Busca en que punto declaras N y M, si no lo encuentras , allí tienes el problema ....


Saludos


Título: Re: No reconoce las variables en funciones
Publicado por: muymuyperdido en 24 Diciembre 2012, 13:29 pm
Buscaré lo de N y M, gracias :)
El código es muy largo (al menos para mi..) 150 lineas, pensé que subirlo seria caos :P


Título: Re: No reconoce las variables en funciones
Publicado por: muymuyperdido en 24 Diciembre 2012, 15:57 pm
N y M están definidas al principio con
#define N 100
#define M 100
asi que por eso no deberia dar problema, no? :|


Título: Re: No reconoce las variables en funciones
Publicado por: flony en 24 Diciembre 2012, 17:32 pm
pone la parte del codigo...como pasas los datos desde main a la funcion recuento


Título: Re: No reconoce las variables en funciones
Publicado por: muymuyperdido en 25 Diciembre 2012, 13:01 pm
#include <stdio.h>
#include <string.h>
#define N 100
#define M 100
void introduceNombre (char dc[N],char dp[N],char dr[N],char dt[N]);
void main(){
  int k,i;
    char datosout[N], datoscomp[N],datosobt[N],datosreal[N];
    float train[N][M], real[N][M], test[N][M], dist[N];

    do{
        printf("Introduzca un numero IMPAR");
        scanf("%d",&k);
    }
    while(k%2==0);

    introduceNombre(datoscomp,datosobt,datosreal,datosout);

}
Y la funcion es:
void introduceNombre (char dc[N],char dp[N],char dr[N],char dt[N])
{
    printf("Introduce nombre de archivo sin extension");
    gets(datoscomp);
    strcpy(datosobt,datoscomp);
    strcpy(datosreal,datoscomp);
    strcpy(datosout,datoscomp);
    strcat(datoscomp,".train");
    strcat(datosobt,".test");
    strcat(datosreal,".real");
    strcat(datosout,".out");
}


(Después tiene más funciones y eso, pero el error es el mismo en todas)


Título: Re: No reconoce las variables en funciones
Publicado por: satu en 25 Diciembre 2012, 16:36 pm
Buenas!!

Los errores ocurren porque utilizas en la función introduceNombre las variables datoscomp, datosobt..... cuando esas variables las tienes definidas en el main, es decir, que solo las puedes usar en el main. Los parámetros que le pasas a la función son dc, dp, dr y dt, así que debes usar estos:

Código
  1. void introduceNombre (char dc[N],char dp[N],char dr[N],char dt[N]) {
  2.    printf("Introduce nombre de archivo sin extension");
  3.    gets(dc);
  4.    strcpy(dp,dc);
  5.    strcpy(dr,dc);
  6.    strcpy(dt,dc);
  7.    strcat(dc,".train");
  8.    strcat(dp,".test");
  9.    strcat(dr,".real");
  10.    strcat(dt,".out");
  11. }
  12.  

Lee sobre el alcance de las variables.
Para que se modifique el valor de los parámetros debes pasarlos por referencia.
Main debe devolver un entero.

Saludos


Título: Re: No reconoce las variables en funciones
Publicado por: muymuyperdido en 25 Diciembre 2012, 20:41 pm
OMG, muchísimas gracias!
¡Vaya error tonto!
Solucionado :D
Pero al compilar y ejecutar me sale un mensaje de error de windows que el programa dejo de funcionar :|


Título: Re: No reconoce las variables en funciones
Publicado por: muymuyperdido en 25 Diciembre 2012, 22:38 pm
Explico, introduzco el nombre que es "datos" por ejemplo y me sale una ventana de
"Windows dejo de funcionar" y no sé por qué..:|
El codigo es

Código
  1. void introduceNombre (char dc[N],char dp[N],char dr[N],char dt[N]) {
  2.    printf("Introduce nombre de archivo sin extension");
  3.    gets(dc);
  4.    strcpy(dp,dc);
  5.    strcpy(dr,dc);
  6.    strcpy(dt,dc);
  7.    strcat(dc,".train");
  8.    strcat(dp,".test");
  9.    strcat(dr,".real");
  10.    strcat(dt,".out");
  11. }
  12.  


Título: Re: No reconoce las variables en funciones
Publicado por: OmarHack en 27 Diciembre 2012, 15:02 pm
Descarga algún depurador para encontrar donde está el problema, me imagino que sabrás lo que es, de todas formas te dejo aquí una definición.
Depuradores: Son programas que permiten detener la ejecución de nuestros programas, inspeccionar variables y ejecutar nuestro programa paso a paso (instrucción a instrucción).