No reconoce las variables en funciones

Iniciado por muymuyperdido, 23 Diciembre 2012, 18:32 PM

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

muymuyperdido

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 :|

durasno

Ahorrate una pregunta, lee el man

twins

Si sube el codigo porfavor, porque asi no es mucho lo que podemos hacer  :-\

Gallu

Busca en que punto declaras N y M, si no lo encuentras , allí tienes el problema ....


Saludos
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

muymuyperdido

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

muymuyperdido

N y M están definidas al principio con
#define N 100
#define M 100
asi que por eso no deberia dar problema, no? :|

flony

pone la parte del codigo...como pasas los datos desde main a la funcion recuento
si un problema no tiene solucion entonces no es un problema...es algo inevitable

muymuyperdido

#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)

satu

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:


void introduceNombre (char dc[N],char dp[N],char dr[N],char dt[N]) {
    printf("Introduce nombre de archivo sin extension");
    gets(dc);
    strcpy(dp,dc);
    strcpy(dr,dc);
    strcpy(dt,dc);
    strcat(dc,".train");
    strcat(dp,".test");
    strcat(dr,".real");
    strcat(dt,".out");
}


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
Breakbeat como forma de vida

muymuyperdido

#9
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 :|