Hola, llevo varios días tratando de compilar este programa y ya no sé si falla por la cabecera, el cuerpo o la llamada a la función
y el cuerpo de la funcion es:
bool probar (THipotesis &hipotesis, TLista &lista,bool &obs_requeridas, Tipo_Observacion *observaciones_requeridas, FILE *f_bch)
{
ofstream fichin1;
char regla[200];
bool res=true;
bool encontrado=false;
Tipo_Observacion *aux;
Tipo_Observacion *nueva;
int digitos_regla;
int i=0;
int comp;
int j=0; //para indicar de que al menos ha cogido una regla concluyente
char num_regla[4];
char c;
fichin1.open("inferencia.txt",ios::app);
fichin1<<"probar(hipotesis, observaciones -> prueba, observaciones_requeridas)"<<endl<<endl;
if (observaciones_requeridas!=NULL)
{
aux = lista.observaciones;
while ((aux!=NULL) && (!encontrado))
{
comp = strcmp (observaciones_requeridas->atributo, aux->atributo);
if (comp==0)
{
comp = strcmp (observaciones_requeridas->concepto, aux->concepto);
if (comp==0)
{
comp = strcmp (observaciones_requeridas->valor, aux->valor);
if (comp==0)
{
encontrado=true;
fichin1 <<"prueba = VERDADERO"<<endl<<endl;
fichin1.close();
return true;
}
else
{
encontrado=true;
fichin1 <<"prueba = FALSO"<<endl<<endl;
fichin1.close();
return false;
}
}
}
aux=aux->siguiente;
}
if (aux==NULL)
{
cout << "ERROR: Excepción grave en la funcion probar\n"<<endl;
exit(1);
}
}
else //prueba = desconocido
{
fichin1 << "Reglas que concluyen sobre "<<hipotesis.atributo<<" ("<<hipotesis.concepto<<") = "<<hipotesis.valor<<": "<<endl<<endl;
while ((!feof(f_bch))) // para coger todas las reglas que concluyen
{
while ((!feof(f_bch)) && (res))
{
res = formato_inicio_bc (f_bch, 'h', num_regla, digitos_regla);
i=0;
c = getc(f_bch);
c = tolower(c);
while ((!feof(f_bch)) && (i!=hipotesis.longatributo) && c(!='\n'))
{
if ((hipotesis.atributo[i]==c) && (i<hipotesis.longatributo))
{
i++;
c = getc(f_bch);
c = tolower(c);
}
else
{
i=0;
c = getc(f_bch);
c = tolower(c);
}
}
if (i==hipotesis.longatributo) //busco el concepto
{
i=0;
while (!feof(f_bch) && (i!=hipotesis.longconcepto) && c(!='\n'))
{
if ((hipotesis.atributo[i]==c) && (i<hipotesis.longconcepto))
{
i++;
c = getc(f_bch);
c = tolower(c);
}
else
{
i=0;
c = getc(f_bch);
c = tolower(c);
}
}
if (i==hipotesis.longconcepto) //busco el valor
{
i=0;
while (!feof(f_bch) && (i!=hipotesis.longvalor) && c(!='\n'))
{
if ((hipotesis.atributo[i]==c) && (i<hipotesis.longvalor))
{
i++;
c = getc(f_bch);
c = tolower(c);
}
else
{
i=0;
c = getc(f_bch);
c = tolower(c);
}
}
if (i==hipotesis.longvalor)
{
j++;
rewind(f_bch); //ponemos al principio el puntero
//buscamos la regla
i=0;
c = getc(f_bch);
c = tolower(c);
while (i!=digitos_regla)
{
if ((num_regla[i]==c) && (i<digitos_regla))
{
i++;
c = getc(f_bch);
c = tolower(c);
}
else
{
i=0;
c = getc(f_bch);
c = tolower(c);
}
}
i=0;
while (c!='\n')
{
regla[i]=c;
c = getc(f_bch);
c = tolower(c);
i++;
regla[i]='\0';
}
fichin1 <<"H"<<num_regla<<regla<<endl<<endl;
rewind(f_bch);
i=0;
c = getc(f_bch);
c = tolower(c);
while (i!=digitos_regla)
{
if ((num_regla[i]==c) && (i<digitos_regla))
{
i++;
c = getc(f_bch);
c = tolower(c);
}
else
{
i=0;
c = getc(f_bch);
c = tolower(c);
}
}
c='^';
while (c=='^')
{
nueva = new Tipo_Observacion;
c = getc(f_bch);
c = tolower(c);
while ((c==' '))
{
c = getc(f_bch);;
c = tolower(c);
}
i = 0;
while ((c!=' ') && (c!='('))
{
nueva->atributo[i]=c;
i++;
c = getc(f_bch);
c = tolower(c);
nueva->atributo[i]= '\0';
}
while ((c==' ') && (c!='('))
{
c = getc(f_bch);
c = tolower(c);
}
i = 0;
while ((c!=')') && (c!=' '))
{
nueva->concepto[i]=c;
hipotesis.longconcepto++;
i++;
c = getc(f_bch);
c = tolower(c);
nueva->concepto[i]= '\0';
}
if ((c==')') || (c==' '))
{
if (c==' ')
{
while ((c==' '))
{
c = getc(f_bch);
c = tolower(c);
}
}
if (c==')')
{
c = getc(f_bch);
c = tolower(c);
while ((c==' ') || (c=='='))
{
c = getc(f_bch);
c = tolower(c);
}
i=0;
while ((c!=' ') && (c!='-') && (c!='^'))
{
nueva->valor[i]=c;
i++;
c = getc(f_bch);
c = tolower(c);
nueva->valor[i]= '\0';
}
//buscamos si hay mas atributos en el antecedente
while ((c!='^') && (c!='-'))
{
c = getc(f_bch);
c = tolower(c);
}
nueva->siguiente=NULL;
if (observaciones_requeridas=NULL)
{
observaciones_requeridas = nueva;
}
else
{
aux=observaciones_requeridas;
while (aux->siguiente!=NULL)
{
aux=aux->siguiente;
}
aux->siguiente = nueva;
}
}
}
}
}
}
}
}
}
if ((feof(f_bch)) && (j==0))
{
cout << "ERROR: No se estan metiendo las reglas en la BC Heuristica de manera correcta\n"<<endl;
obs_requeridas = false;
fichin1.close();
remove("inferencia.txt");
return false;
}
else //ha cogido reglas y prueba = desconocido
{
rewind(f_bch); //ponemos al principio el puntero
fichin1 <<"prueba = DESCONOCIDO"<<endl<<endl;
fichin1.close();
obs_requeridas = true;
return false;
}
}
}
Espero que alguien me pudiera ayudar, gracias!