Ir para conteúdo
Fórum Script Brasil

Yannick Freitas

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Yannick Freitas

Yannick Freitas's Achievements

0

Reputação

  1. Então Galera, preciso fazer o método procura, que esta no arquivo TLista.cpp, o método procura tem que pesquisar dentro da Lista pelo nome. E retornar a posição dentro da tabela hash. Postei todos os arquivos que utilizo no código. Obrigado! header #include <iostream> #include <string> #include <stdlib.h> #include <errno.h> #include <fstream> #include <sstream> #include <time.h> #include <stdio.h> #include <sys/time.h> #include <cmath> using namespace std; #define PRINT(arg) #arg "=" << arg << ", " #define PRINTN(arg) #arg "=" << arg << endl #define CINE(arg) { cin >> arg; if (!cin) { cerr << "CINE failed reading var >" #arg "< in file >" __FILE__ "< at line >" << __LINE__ << "<." << endl; exit(2);}} #define CINE3(a,b,c) CINE(a);CINE(b);CINE(c) #define CINE4(a,b,c,d) CINE(a);CINE(b);CINE(c);CINE(d) #define CINE8(a,b,c,d,e,f,g,h) CINE(a);CINE(b);CINE(c);CINE(d);CINE(e);CINE(f);CINE(g);CINE(h) #define GETLINE(string) { getline(cin,string); if (!cin) { cerr << "GETLINE failed reading string " #string << " in file " __FILE__ " at line " << __LINE__ << endl; exit(1);}} //#define NEWA(var,type,size) { e=1; } //#define NEWA(var,type,size) { if(0==(var=new type [(size)])) e=1; } #define NEWA(var,type,size) { try { if(0==(var=new type [(size)])) throw;} catch (...) { cerr << "NEWA failed on " #var "=new " #type "[" #size "=" << (size) << "]" << endl; exit(1); }} main.cpp #include <cstdlib> #include <iostream> #include "TLista.h" #include "THash.h" using namespace std; int main(int argc, char *argv[]) { THash h1(5); TPessoa a1; char op; do{ cout << "\n \n \n \t \t******** MENU OPERACOES ********* \n"; cout << "\t\t 1 - Informar o tamanho da tabela HASH \n"; cout << "\t\t 2 - Inserir elemento \n"; cout << "\t\t 3 - Imprimir tabela hash\n"; cout << "\t\t S - Sair\n"; cout << "\t \t********************************* \n"; cout << "\t\t Digite sua opcao:"; cin >> op; system("cls"); if(op == '1'){ cout << "\n-----DEFININDO O TAMANHO DA TABELA ----\n"; int t; cout<<"Novo tamanho:"; cin >> t; h1.setTamanho(t); cout << "\n----------------------------------------\n"; }else if(op == '2'){ cout << "\n-----INSERCAO DE CADASTRO------\n"; cout<< "Nome:"; cin >> a1.nome; cout<< "Rg:"; cin >> a1.rg; cout<< "Idade:"; cin >> a1.idade; cout<< "Salario:"; cin >> a1.salario; h1.insere(a1); cout << "\n-----------------------------\n"; }else if(op=='3'){ h1.imprime(); } }while(op != 's'); system("PAUSE"); return EXIT_SUCCESS; } THash.cpp #include "THash.h" #include <iostream> using std::ostream; THash::THash () { // construtor tam = 0; alfabeto = "abcdefghijklmnopqrstuvwyz"; } THash::THash (int t) { // construtor tam = t; tabelaHash = new TLista[tam]; alfabeto = "abcdefghijklmnopqrstuvwyz"; } void THash::setTamanho(int t){ tam = t; delete tabelaHash; tabelaHash = new TLista[tam]; } bool THash::insere(TPessoa a){ int i; i = funcaoHash(a); tabelaHash[i].insere(a); } int THash::getPosicao(char letra){ } int THash::funcaoHash(TPessoa a){ string nome = a.nome; double somatorio = 0; int indice; int posicaoDaLetra; int i=0; char l = nome[i]; while(l != ''){ posicaoDaLetra = getPosicao(l); if(posicaoDaLetra >= 0) somatorio = somatorio + getPosicao(nome[i]); else cerr << "Erro - Letra não encontrada."; i++; l = nome[i]; } indice = (int) somatorio; indice = indice % tam; cout << "Pos:"<<indice; return indice; } void THash::imprime(){ cout<<"\n******************** TABELA HASH ********************* \n"; for(int i=0; i<tam; i++){ tabelaHash[i].imprime(i); } cout<<"******************************************************* \n"; } THash.h #ifndef _THash_H__ #define _THash_H__ #include "header" #include "TNodo.h" #include "TLista.h" using std::ostream; //typedef basic_string<char> string; class THash { public: THash(); THash(int t); void setTamanho(int t); bool insere(TPessoa a); void imprime(); private: int getPosicao(char letra); int funcaoHash(TPessoa a); string alfabeto; int tam; TLista * tabelaHash; }; #endif TLista.cpp #include <assert.h> #include <iostream> using std::ostream; using std::cout; #include "TLista.h" //////////////////////// // Funções públicas //////////////////////// TLista::TLista() { tam = 0; head = NULL; } TNodoPtr TLista::n_esimo(int n) const { TNodoPtr p=head; int j=1; while((j<n)&&(p->prox!=NULL)){ p=p->prox; j++; } return p; } int TLista::posicao(TNodoPtr p) const { assert(p); // assegura referencia valida TNodoPtr tmp; int i=1; tmp=head; while (tmp && tmp != p) { tmp = tmp->prox; i++; } if (tmp == p) return i; else return 0; } TNodoPtr TLista::procura(TPessoa a) const { } bool TLista::insere(TPessoa a) { TNodoPtr novo = new TNodo(a,NULL); novo -> prox = head; head = novo; tam ++; } bool TLista::remove(TNodoPtr p) { assert(p); // testa posicao de remocao valida TNodoPtr tmp; if (p == head) { // remove o primeiro TNodo tmp = head; head = head->prox; delete(tmp); return true; } else { tmp = head; while (tmp->prox != p) tmp = tmp->prox; tmp->prox = p->prox; delete(p); return true; } } unsigned int TLista::tamanho() const { int count=0; for (TNodoPtr p=head; p; p=p->prox) count++; return(count); } void TLista::imprime(int i) const { cout<<endl<< "------------------------------------------------------"<<endl; cout << "Indice "<< i <<" tem "<< tam <<" elementos"<< endl; int j; TNodoPtr p = head; if(!p) cout << "";//cout << "Lista vazia."; else{ int i=0; while(p){ cout << "("<< p->item.nome <<","<< p->item.rg <<","<< p->item.idade <<","<< p->item.salario<<") "; p = p->prox; i++; } } cout<< endl <<"------------------------------------------------------"<<endl; } bool TLista::EstaVazia() const { return (head == NULL); } TLista::~TLista() { } TLista.h #ifndef _TLista_H__ #define _TLista_H__ #include "TNodo.h" #include <iostream> using std::ostream; class TLista { public: TLista(); // construtor de TLista vazia TNodoPtr n_esimo(int n) const; // retorna uma referencia para o n-esimo item int posicao(TNodoPtr p) const; // retorna a posicao do item referenciado por p TNodoPtr procura(TPessoa p) const; // retorna uma referência para o nodo tal que item == it bool insere(TPessoa a); // insere o item it na primeira posicao bool remove(TNodoPtr p); // remove o item referenciado por p unsigned int tamanho() const; // número de nodos na TLista void imprime(int i) const; // imprime os itens da TLista bool EstaVazia() const; // retorna verdadeiro se a TLista esta vazia ~TLista(); // destrutor de TLista private: TNodoPtr head; // apontador para o primeiro nodo da TLista int tam; }; #endif TNodo.cpp TNodo::TNodo (TPessoa a, TNodoPtr ptr=NULL) { // construtor item = a; prox = ptr; } TNodo.h #ifndef _TNodo_H__ #define _TNodo_H__ #include <iostream> #include <sstream> #include <string> #include "header" using std::ostream; //typedef basic_string<char> string; struct TPessoa{ string nome; string rg; int idade; double salario; }; class TNodo; typedef TNodo* TNodoPtr; // apontador para um nodo da lista class TNodo { friend class TLista; friend class THash; public: TNodo (TPessoa a, TNodoPtr ptr); private: TPessoa item; TNodoPtr prox; }; #endif
×
×
  • Criar Novo...