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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 ... 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 [110] 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 ... 161
1091  Programación / Programación C/C++ / Re: Convertir de decimal a binario en lenguaje C. en: 7 Noviembre 2016, 21:53 pm
CHAR_BIT es una macro que depende de la biblioteca estándar de C, está en la librería limits.h
Estas macros, como ya he dicho, están pensadas para ayudar a la portabilidad de código pues hacen que no se deba modificar de una plataforma a otra aún si las especificaciones son diferentes.

De hecho para una máquina que trabaje con caracteres de 7 bits, en su biblioteca asociada a su lenguaje C, te encontrarás con que CHAR_BIT tiene el valor 7, mientras que en un moderno computador de sobremesa, en su biblioteca tendrá definido CHAR_BIT con el valor 8.

No existen unos valores invariables, para todas las arquitecturas del mundo, de las macros de la biblioteca de C, más sabiendo que es un lenguaje dependiente de la arquitectura. Las macros estarán definidas para encajar con esa arquitectura para la que está pensada esa biblioteca.

Es más, si usaras números mágicos en tus programas te encontrarías con un archivo fuente que te funciona bien en un sitio, y sin embargo lo portas a otra máquina diferente y te falla.

limits.h existe precisamente para esto. Un entero int no tiene un tamaño igual en un procesador de 32 bits que en un de 8. Así mediante dicha librería el programa puede saber si va a exceder el límite del tipo de dato.
1092  Programación / Programación C/C++ / Re: Ayuda Acumulador de cadenas en C en: 7 Noviembre 2016, 21:42 pm
Necesitas strcat de string.h
1093  Programación / Programación C/C++ / Re: Convertir de decimal a binario en lenguaje C. en: 7 Noviembre 2016, 19:40 pm
CHAR_BIT es una de esas constantes que se usan para hacer portable el código en diferentes máquinas.

Hay procesadores que pueden usar los antiguos char de 7 bits. En ellos la constante CHAR_BIT valdría 7.
1094  Programación / Programación C/C++ / Re: Necesito ayuda con mi programa en: 7 Noviembre 2016, 19:04 pm
Explica como debe ser el algoritmo. Ten en cuenta que no sabemos nada de lo que debe hacer.
1095  Programación / Programación C/C++ / Re: Convertir de decimal a binario en lenguaje C. en: 7 Noviembre 2016, 17:05 pm
Claro.
Supongamos que CHAR_BIT vale 8. En algunas máquinas el char puede ser de 7 bits, con lo que el programa fallaría. Así que sería mejor sustituir esa parte por un 8 para hacerla más portable.

Hay que encender solamente el bit más significativo y para ello se moverá un 1 tantas posiciones a la izquierda como sea necesario: 1 <<

sizeof da la cantidad de bytes de un tipo, pero el operador << mueve una cantidad de bits y para transformar cantidad de bytes en catidad de bits se multiplica por 8. Quedará así 1 << sizeof(unsigned) * 8

Pero haciéndolo así nos salimos, por una sola posición, de las dimensiones del dato, en realidad hay que ir un bit a la derecha así que la operación se convierte en 1 << sizeof(unsigned) * 8 - 1.



1096  Programación / Programación C/C++ / Re: Convertir de decimal a binario en lenguaje C. en: 7 Noviembre 2016, 15:45 pm
Quisiste decir:
Código
  1. i = 1;
y
Código
  1. unsigned int bit = 1U << (sizeof(unsigned) * CHAR_BIT - 1);
1097  Programación / Programación C/C++ / Re: Morse - ¿donde está mal? en: 7 Noviembre 2016, 12:50 pm
Para el problema de scanf:
Código
  1. scanf("%95[^\n]", frase);
1098  Programación / Programación C/C++ / Re: Ayuda, que esta mal ? en: 6 Noviembre 2016, 23:29 pm
Tiene que ver con la memoria de la pila (stack) y el montón (heap).
Cuando entras en una función C adquiere espacio en la pila para las variables y los arrays. Cuándo se sale de la función toda esta memoria desaparece.
Por otra parte la memoria del montón es más permanente, por el hecho de que la controlas tú. Adquieres memoria con una de las funciones de la familia malloc. Si creas un array en el montón, éste no depende de la función por eso aunque salgas de ella lo que hay en memoria permanece. Si devuelves de la función el puntero que apunta a esa zona de memoria, en tu main recibirás dicha dirección y podrás trabajar con ella.

Te recomiendo que busques sobre memoria stack y heap. Te aclarará muchas dudas.
1099  Programación / Programación C/C++ / Re: Ayuda, que esta mal ? en: 6 Noviembre 2016, 22:57 pm
Tienes mal 2 cosas.
Código:
scanf("%s",&cad);
Una variable tipo cadena no debe pasarle su dirección con & a scanf.
Debería ser así:
Código:
scanf("%s", cad);

Por otra parte estás devolviendo, en la función copiar, un array local. Éste se destruye al salir de la función. Deberías usar malloc sobre un puntero y devolverlo; esto es memoria del montón y permanece entre llamadas, a diferencia de la pila.
1100  Programación / Programación C/C++ / Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA) en: 6 Noviembre 2016, 22:43 pm
Eso muestra una solución recursiva y su contraparte iterativa.

Top-down y bottom-up son como te explica, por ejemplo, wikipedia: https://es.wikipedia.org/wiki/Top-down_y_bottom-up
Páginas: 1 ... 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 [110] 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines