elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 33
111  Programación / Programación C/C++ / Re: Ayuda - Archivo binario en: 25 Enero 2019, 21:58 pm
Será que en la línea 12 asignas 2 veces la variable i?
112  Programación / Programación C/C++ / Re: Bus error : 10. (muy raro).. en: 20 Enero 2019, 10:59 am
Le estas dando al compilador una mision dificil.

El compilador, ademas de revisar que la sintaxis este bien, genera el codigo que se ejecutara posteriormente. Para el caso particular de la indexacion del arreglo, es un desplazamiento desde el comienzo del mismo unido al valor del indice. En sencillo, el compilador generara una suma:  direccion de comienzo + desplazamiento. La suma se calcula en tiempo de ejecucion.

En tiempo de ejecucion, mucho despues de que el compilador actuo', la direccion de memoria resultante de la suma de antes dicha podria ser mas alla o mas aca de los limites del arreglo mismo.

Este es el primer problema que te puedes enfrentar, el siguiente es que las distintas arquitecturas tienen distintas exigencias, por ejemplo, que los enteros tienen que estar en direcciones de memoria multiplos de 4 y aunque validamente podrias tener una direccion de memoria, esta no sea posible de desreferenciar por la restriccion antes dicha. Este es el bus error.

El problema es doble: Salirte de los limites del arreglo, y luego tener direccion de memoria con mal alineamiento.

En general los compiladores no tienen ninguna logica para "ejecutar" el programa para poder detectar si este problema se va a producir en tiempo de ejecucion.

Sin embargo, para el problema de salirse de los limites del arreglo existen productos comerciales que realizan chequeos estaticos y podrian advertirte el problema. En general, los compiladores no hacen tales chequeos.
113  Programación / Programación C/C++ / Re: Error con un número en: 14 Enero 2019, 16:03 pm
Reemplaza cada 0x58 por un numero mayor que 100, por ejemplo 101.
114  Programación / Programación C/C++ / Re: Error con un número en: 14 Enero 2019, 15:26 pm
Cuando marcas lo ya visitado con el numero 0x58 estas usando el numero 88 para marcar.
Esto podria marcar varias posiciones antes que pueda aparecer el 88.
Cuando este aparece finalmente, tu logica hara que la condicion sea cierta para todas las posiciones que has marcado, y haras entonces que el contador crezca tanto como marcas haya.

Solucion?  Usa un valor mayor que 100 para marcar.
115  Programación / Programación C/C++ / Re: recursividad cruzada en: 12 Enero 2019, 15:12 pm
- Que valor retorna la funcion positivo si el valor que recibe como parametro es efectivamente positivo?
- Sugiero que las funciones positivo y negativo retornen 1 o 0.
- Sugiero que no hagas ningun printf al interior de esas funciones, sino que sea el main el que lo haga basado en el valor que esas funciones retornen.
116  Programación / Programación C/C++ / Re: Recursion en bst en: 12 Enero 2019, 04:07 am
Se puede hacer recursivamente, en esa función, llamemosla f, suma 0 cuando sea una hoja, suma todo el resto recursivamente, retorna el valor de la suma y haz una función que llame a f y le reste el valor que está en la raíz.
117  Programación / Programación C/C++ / Re: Me ayudais con esta funcion? en: 9 Enero 2019, 21:03 pm
El primer if parece tener las condiciones al reves
118  Programación / Programación C/C++ / Re: Ciclos anidados en: 9 Enero 2019, 15:02 pm
Y usando el primer numero, sin variables adicionales:

Código
  1. int main() {
  2.    for (int i = 0; i <= 9; i++) {
  3.        printf("%d,%d\n", i, (i+2) / 2);
  4.    }
  5. }
  6.  
119  Programación / Programación C/C++ / Re: Ciclos anidados en: 9 Enero 2019, 14:58 pm
Una posibilidad de solucion, alternativa a lo que ya se ha dicho, es tomar el numero de la segunda columna para iterar, y hacer unroll del primer ciclo, asi:

Código
  1. int main() {
  2.    int i = 0;
  3.    for (int j = 1; j <= 5; j++) {
  4.        printf("%d,%d\n", i++, j);
  5.        printf("%d,%d\n", i++, j);
  6.    }
  7. }
  8.  
120  Programación / Programación C/C++ / Re: pasar procedimientos recursivos a funciones en bst en: 8 Enero 2019, 14:23 pm
Puedo estar equivocado, pero creo que cantidad_nodos debería sumar siempre uno.
No parece bien los if de la línea 22
Algo así:

Código
  1. int cantidad_nodos(arbol a) {
  2.   int contador=0;
  3.   if(a!=NULL) {
  4.      contador=1 + cantidad_nodos(a->izq)+cantidad_nodos(a->der);
  5.   }
  6.   return contador;
  7. }
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 33
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines