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 :|
subi el codigo completo. Saludos
Si sube el codigo porfavor, porque asi no es mucho lo que podemos hacer :-\
Busca en que punto declaras N y M, si no lo encuentras , allí tienes el problema ....
Saludos
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
N y M están definidas al principio con
#define N 100
#define M 100
asi que por eso no deberia dar problema, no? :|
pone la parte del codigo...como pasas los datos desde main a la funcion recuento
#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)
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
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 :|
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
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");
}
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).