Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - CalgaryCorpus

#201
Cuando llamas la funcion Maximo10 estas usando parentesis cuadrados, usa parentesis redondos.
#202
No es necesario usar funciones como log o convertir el numero a string, tampoco es necesaria la recursion.

Basta comparar el numero contra 10.
Si lo que llevas despues de calcular la suma de los digitos es menor que 10 (y mayor o igual que 0) entonces el numero es de longitud 1.

Algo asi:

Código (cpp) [Seleccionar]

int obtener_un_digito(int numero_inicial) { .  // numero_inicial >= 0
 int un_digito = numero_inicial;
 while(un_digito >= 10) {
     un_digito = suma_digitos(un_digito);
 }
 return un_digito;
}


     
#203
Sugerencias:

- Escribe aqui el error completo que te aparece, no solo una parte. Tal vez el error completo da más indicios del problema y al recortarlo haces mas difícil adivinar que problema tienes.
- pon el comando que usas para ejecutar tu programa. Lo escondido de esta sugerencia es que leí que tiene que ejecutarse con sudo, y tal vez no lo has hecho así.
#204
Programación C/C++ / Re: Duda llamada estructura
8 Noviembre 2018, 08:33 AM
p no parece tener mucha utilidad. Remuevela y usa ind directamente asi:

Código (cpp) [Seleccionar]
pthread_create(&Hilo[i-1],NULL, indeciso,(void*)&ind);
#205
Programación C/C++ / Re: Hashing Ayuda!
22 Octubre 2018, 19:28 PM
Los arreglos usan indices.
Los arreglos tienen datos del mismo tipo.
Define un arreglo que tiene listas.
Cada dato a insertar va en alguna de esas listas, dentro de ese arreglo.
Cual lista tiene que insertarse?
Se calcula usando una funcion que dado el dato, te devuelve un numero, el que usas de indice, o bien, si es mayor que el tamano del arreglo, haces modulo con el tamano del arreglo para obtener un indice valido.

Resumen:

insertar en la lista que esta en   hash_table[ hash_function(dato) % tamano(hash_table) ]

Como buscar?

basta buscar en 1 sola lista, cual?  La misma que se calcula al insertar.

Si tu funcion de hash distribuye bien los datos, tienes varias listas pequenas. Si distribuye mal, tienes pocas listas largas.

El tiempo de insercion y de busqueda tendra relacion con la calidad de la funcion de hash que uses.

#206
Para complementar la respuesta dada previamente, si tienes un vector de enteros v, una manera de sumarlos es esta:

Código (cpp) [Seleccionar]
suma = accumulate(v.begin(), v.end(), 0)

Tienes que agregar

Código (cpp) [Seleccionar]
#include <numeric>
#207
Aplica la misma idea que muestras aquí, mantén un arreglo de índices y compara la desrefencia. Cuánto corresponda mover o intercambiar, lo haces en el arreglo de índices.
#208
Mis comentarios al código mostrado:

Usa etiquetas Geshi de C o C++ para que aparezcan números de línea. Es más fácil comentar así

Haz que el ciclo llegue hasta 3. Cómo está visitas más allá del fin del arreglo.

Usa nombres de variables que ayuden a entender el código. Que es o que guarda "I"?

"i" debería ser el índice, pero usaste "n" para ese efecto.

Al compilador no le va a costar mas si usas variables con mejores nombres.

si "i" parte con el primer valor, es superfluo que el índice empiece en 0, hazlo partir en 1.

#209
El printf no imprime nada ahora, pues no recibe argumentos.
Sugiero poner un valor o variable para que se imprima algo.
#210
Programación C/C++ / Re: C++ PUNTEROS a clases POO
6 Septiembre 2018, 14:01 PM
Asi funcionan los punteros. Son guardadores de las direcciones de memoria de los objetos.
El operador * y el operador -> no hacen mas que visitar las direcciones de memoria, por lo que cuando haces una copia de los punteros, solo haces copia de las direcciones, no de los objetos.

Por la misma razon, cuando modificas usando el operador -> estas visitando el mismo objeto para los 2 punteros.

Tener 2 punteros apuntando al mismo objeto se llama "alias" y esto que te ocurre es indicador de lo que ya te he explicado.

Posible solucion: Crea un constructor de copia y usalo en vez de hacer una asignacion en las lineas 69 y 70.

EL constructor de copia es un nuevo constructor que recibe un objeto del mismo tipo que la clase que estas creando.

Finalmene, despues de implementar el constructor de copia y reemplazar esas 2 lineas, tu codigo se veria:

Código (cpp) [Seleccionar]
persona *p3 = new persona(c->devuelve(0));

Sin ningun otro cambio necesario, deberia funcionar.

Una convencion que no estas usando es nombrar las clases con mayuscula inicial, intenta seguirlo para hacer mas facil a otros leer tu codigo.