Dudas Arbol Trie e implementacion

Iniciado por mario_tko, 15 Noviembre 2011, 12:36 PM

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

mario_tko

Hola compañeros, a ver si me podeis ayudar en estas pequeñas dudas que tengo.

El problema: Crear un Arbol Trie que apunte a unas estructuras de datos (listas doblemente enlazadas).

Se trata de un diccionario con acciones de Insertar pababra, Eliminar palabra, Buscar palabra y Decir

si el "diccionario" esta vacio.

Por ahora tengo terminado la interfaz (ArbolTrie.h) y estoy con la implementacion, pero se me estan

presentando muchas dudas. Nose si trabajar directamente sobre el fichero .txt o sobre el Arbol y me

estoy haciendo un lio con los nodos y demas.

Por ahora he empezado a implementar la funcion EsVacio() que me dice si el arbol/fichero txt esta vacio

(si no contiene ninguna palabra), no me da errores, pero me da algunos warnings en

Aqui esta el codigo:




//Implementacion de la clase ArbolTrie
//Clase ArbolTrie -- IMPLEMENTACION

#include <iostream.h>
#include <stdio.h>
#include <fstream.h>
#include <iomanip.h>

#include "ArbolTrie.h"

#ifndef __ARBOLTRIE_CPP__
#define __ARBOLTRIE_CPP__

using namespace std;

//Constructores
ArbolTrie::ArbolTrie()
{
T = NULL;
}

//Destructores
ArbolTrie::~ArbolTrie()
{
// No hay que hacer nada
}



//////////////IMPLEMENTACION DEL METODO CONSULTA/////////////////



int ArbolTrie::EsVacio()//Comprueba si tiene palabras
{
ifstream dic;
dic.open("diccionario.txt", ios::in);

char c;

if(!dic)
{
cerr << "ERROR EN LA APERTURA";
return 1;
}

dic >> c;

if(dic.eof())
{
cout << "FICHERO VACIO" << endl;
return 0;
}
else
{
return 1;
}
dic.close();   //////EL WARNING SALE AQUI

}///OTRO WARNING ME SALE AQUI

#endif



WARNINGS:


[BCC32 Warning] ArbolTrie.cpp(58): W8066 Unreachable code
  Full parser context
    ArbolTrie.cpp(35): parsing: int ArbolTrie::EsVacio()
[BCC32 Warning] ArbolTrie.cpp(59): W8070 Function should return a value
  Full parser context
    ArbolTrie.cpp(35): parsing: int ArbolTrie::EsVacio()



Alguien me puede ayudar?

Ferno

Lo que sucede con ambos warnings es lo siguiente.

Unrecheable code: Te dice que tenés una línea (en este caso la llamada a dic.close()) a la que el programa NO VA A LLEGAR NUNCA. Fijate que tenés una condición con su respectivo else; sea cual sea el valor que devuelva, entra a alguno de los dos bloques y ejecuta un return. Esto hará que salga de la función sin poder llegar nunca a ejecutar dic.close().
Para que esta llamada se ejecute, debes ubicarla antes de cada return.

Function should return a value: Aquí no estoy tan seguro, pero interpreto que deberás incluir algún return al final de tu función (aunque es extraño que sea en el unreachable code). Quizás no están bien abiertas/cerradas las llaves de cada sentencia. O el EsVacio() está definido dentro de algo que necesite un return!

mario_tko

Muchas gracias, ya he resuelto este problema. Pero ahora me he dado cuenta de que esta no era la representacion real del problema.

Tengo que crear un Arbol Trie que inserte palabras en un archivo .txt