1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ficheiros e listas ligadas c++

Discussão em 'Programação' iniciada por Paiva13, 17 de Junho de 2009. (Respostas: 3; Visualizações: 1123)

  1. Boas pessoal!

    Estou aqui com uns problemas para carregar o que esta dentro de um ficheiro para uma lista ligada:S

    O codigo que tenho feito e este:

    #include<iostream>
    #include<fstream>
    #include<string>
    using namespace std;

    class Clista{
    public:
    string dados;
    Clista *Proximo;
    };

    class ClistaInteiros{
    Clista *cabeca;
    public:
    ClistaInteiros();
    ~ClistaInteiros();

    void InsereItem(string item);
    void Procura(string item);
    void carregadicionario();
    void EscreveLista();
    };

    ClistaInteiros::ClistaInteiros(){
    cabeca=NULL;
    }


    ClistaInteiros::~ClistaInteiros(){
    Clista *actual, *proximo;

    if(cabeca!=NULL){
    actual=cabeca;
    while(actual!=NULL){
    proximo=actual->Proximo;
    delete actual;
    actual=proximo;
    }
    }
    }

    void ClistaInteiros::InsereItem(string item){
    Clista *Novo=new Clista;
    Clista *actual;
    Novo->dados=item;
    Novo->Proximo=NULL;

    if(cabeca==NULL){
    cabeca=Novo;
    }else{
    actual=cabeca;
    while(actual->Proximo!=NULL)
    actual=actual->Proximo;
    actual->Proximo=Novo;
    }
    }

    void ClistaInteiros::carregadicionario(){
    ClistaInteiros a;
    string palavra=NULL;
    ifstream ff("Texto.txt");
    if(!ff){
    cout << "Nao consegue abrir o ficheiro";
    }
    while(getline(ff, palavra)!=NULL){
    a.InsereItem(palavra);
    }
    ff.close();

    }
    void ClistaInteiros::EscreveLista(){
    Clista *actual=cabeca;
    if(cabeca==NULL)
    cout << "Lista Vazia..." << endl;
    else{
    while(actual!=NULL){
    cout << actual->dados << ", ";
    actual=actual->Proximo;
    }
    cout << "FIM" << endl;
    }
    }

    int main(){

    ClistaInteiros ab;
    ab.carregadicionario();
    ab.EscreveLista();
    }

    Gostaria que dessem uma vista de olhos no programa e que me dissessem qual o problema dele.

    Obrigado.
     
    Última edição: 17 de Junho de 2009
  2. migp999

    migp999 Power Member

    Boas
    o teu erro está na função carregadicionario() em que tens
    string palavra=NULL
    se tirares o =NULL já funciona.
    Eu nunca declarei assim uma string, sempre utilizei:
    string palavra;
    e nunca tive problemas por causa disso...

    Cumps:D

    PS: para a próxima utiliza o botão em cima para pores o código para se tornar mais legível...
     
  3. sL1Per

    sL1Per Power Member

    Ou em ultimo caso string palavra="";
     
  4. Ace-_Ventura

    Ace-_Ventura Power Member

    já agora, tens mesmo de usar 1 lista tua? é que tens o std::vector ou std::list que já fazem tudo, com a certeza que não dão problemas (e optimizados o melhor possível).
     

Partilhar esta Página