Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mario_tko en 15 Noviembre 2011, 12:26 pm



Título: Warnings en tratamiento de ficheros con C++ Builder XE
Publicado por: mario_tko en 15 Noviembre 2011, 12:26 pm
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:


Código:

//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:
Código:

[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?


Título: Re: Warnings en tratamiento de ficheros con C++ Builder XE
Publicado por: do-while en 15 Noviembre 2011, 16:01 pm
¡Buenas!

Prueba con esto...
Código
  1.  
  2. if(dic.eof())
  3. {
  4. dic.close(); //cerramos el fichero antes de volver.
  5. cout << "FICHERO VACIO" << endl;
  6. return 0;
  7. }
  8. //else: este else no hace falta. Ya sabemos que el fichero no ha llegado a su fin
  9. {
  10. //return 1; si pones aqui el return, nunca llegaras a cerrar el fichero
  11. }
  12. dic.close();   //////EL WARNING SALE AQU
  13.  
  14. return 1; //la funcion termina devolviendo un valor despues de cerrar el fichero
  15.  

A ver si ahora no te suelta los warnings... sino, a bote pronto, no veo errores (que no quiere decir que no se me hayan podido pasar)...

¡Saludos!