m atrancado y no puedo seguir!!! S O S
tengo el siguiente codigo y no me deja operar con las estructuras de listas desde esta clase. La clase lista esta mas que probada. El codigo es para hacer una tabla hash,. La estructura es un doble puntero a un array de punteros a listas del tipo ciudad. no me deja operar con las funciones de las listas.porfa dadme ideas!!!!!!!! me da problemas donde estan las flechas, con lo que he probado, seguro que se cuelga en mas sitios. Dame ideas!!!!!
este es el codigo:(tablaHash.h)
#include<iostream.h>
#include<math.h>
#include<string.h>
///#include"cadena.hpp"
#include"Clista.hpp"
//#include"ciudad.hpp"
class tablaHash
{
friend class ciudad;
public:
tablaHash(int);
~tablaHash();
int hashSimple(char *);
int hashMult(char *);
int hashDiv(char *);
int busqueda(char *);
void insertar(ciudad );
void diagrama();
void calcularMedia();
void calcularDesv();
void paborrar();
//private:
int buckets;
Clista<ciudad> **puntero;//hay un fallo gordo no se puede operar con el
//TENGO QACER METODOS DE ESOS DE PUT Y GET
int *cant;
double media, desviaciont;
//variables de prueba pa sacar los errores
Clista<int> **ptrSuma;
char k;
};
tablaHash::tablaHash(int valor)
{
buckets=valor;
//array de listas de ciudades
puntero=new Clista<ciudad> *[valor];
ptrSuma=new Clista<int> *[valor];
media=0,0;
desviaciont=0,0;
//array que indica la ocupacion de los buckets
cant = new int[valor];
//inicializo el array cant
for(int j=0; j<buckets;j++)
cant[j]=0;
//CREO QUE ESTO ESTA BIEN
//inicializo el array de punteros a listas
for(int h=0; j<buckets;h++)
{
puntero[j]=new Clista<ciudad>();
ptrSuma[j]=new Clista<int>();
}
cout<<"creo bien";
cin>>k;
}
tablaHash::~tablaHash()
{
delete [] cant;
delete [] puntero;
delete [] ptrSuma;
}
int tablaHash::hashSimple(char *palabra)
{
int valor =0;
for(int i=0; i<(int)strlen(palabra);i++)
//valor = valor + (int) *(c+i);
valor = valor + (int) *(palabra+i);
cout<<"salgo en hash simple"<<"n";
return (int)fmod((double)valor,(double)buckets);
}
int tablaHash::hashMult(char *palabra)
{
int valor =0;
const unsigned long cte_hash=2654435769u;///tengo dudas sobre este numero
for(int i=0; i<(int)strlen(palabra);i++)//no se si es o ó cero
valor = (valor +(int) *(palabra+i)) * cte_hash;
return (int)fmod((double)valor,(double)buckets);
}
int tablaHash::hashDiv(char *palabra)
{
double valor =0;
int base=227;
int primerCaracter=32;
for(int i=0; i<(int)strlen(palabra);i++)
//for(int i=0; *(c+i)!="
este es el codigo:(tablaHash.h)
#include<iostream.h>
#include<math.h>
#include<string.h>
///#include"cadena.hpp"
#include"Clista.hpp"
//#include"ciudad.hpp"
class tablaHash
{
friend class ciudad;
public:
tablaHash(int);
~tablaHash();
int hashSimple(char *);
int hashMult(char *);
int hashDiv(char *);
int busqueda(char *);
void insertar(ciudad );
void diagrama();
void calcularMedia();
void calcularDesv();
void paborrar();
//private:
int buckets;
Clista<ciudad> **puntero;//hay un fallo gordo no se puede operar con el
//TENGO QACER METODOS DE ESOS DE PUT Y GET
int *cant;
double media, desviaciont;
//variables de prueba pa sacar los errores
Clista<int> **ptrSuma;
char k;
};
tablaHash::tablaHash(int valor)
{
buckets=valor;
//array de listas de ciudades
puntero=new Clista<ciudad> *[valor];
ptrSuma=new Clista<int> *[valor];
media=0,0;
desviaciont=0,0;
//array que indica la ocupacion de los buckets
cant = new int[valor];
//inicializo el array cant
for(int j=0; j<buckets;j++)
cant[j]=0;
//CREO QUE ESTO ESTA BIEN
//inicializo el array de punteros a listas
for(int h=0; j<buckets;h++)
{
puntero[j]=new Clista<ciudad>();
ptrSuma[j]=new Clista<int>();
}
cout<<"creo bien";
cin>>k;
}
tablaHash::~tablaHash()
{
delete [] cant;
delete [] puntero;
delete [] ptrSuma;
}
int tablaHash::hashSimple(char *palabra)
{
int valor =0;
for(int i=0; i<(int)strlen(palabra);i++)
//valor = valor + (int) *(c+i);
valor = valor + (int) *(palabra+i);
cout<<"salgo en hash simple"<<"n";
return (int)fmod((double)valor,(double)buckets);
}
int tablaHash::hashMult(char *palabra)
{
int valor =0;
const unsigned long cte_hash=2654435769u;///tengo dudas sobre este numero
for(int i=0; i<(int)strlen(palabra);i++)//no se si es o ó cero
valor = (valor +(int) *(palabra+i)) * cte_hash;
return (int)fmod((double)valor,(double)buckets);
}
int tablaHash::hashDiv(char *palabra)
{
double valor =0;
int base=227;
int primerCaracter=32;
for(int i=0; i<(int)strlen(palabra);i++)
//for(int i=0; *(c+i)!="
