[C con Clase] Varias dudas

Sorcerer sorcerer.cl en gmail.com
Vie Feb 2 22:13:25 CET 2007


> Hola, tengo un par de dudas que os quería plantear para que me ayudéis a >resolverlas:

Haré lo q pueda xD

>He conseguido una tabla sobre el código ASCII (en inglés por desgracia) pero >sólo aparecen los signos que corresponden a los números del 1 al 255 y sin >embargo el carácter 'ñ' es el número - 92. ¿Alguien me podría decir dónde >encontrar algo más completo?

Eeee... en google salen a puñados, pero más fácil hace un programa que imprima los carácteres del 1 al 255 y vas a ver como es en tu computador.

> En el capítulo "Normas para la notación" habláis de la notación decimal, octal >o hexadecimal. Decís que son más útiles que la hexadecimal y la octal que la >decimal. El problema es que no tengo ni idea de pasar de una a otra y me >resulta muy difícil. Si realmente es importante saber esas notaciones, ¿me >podría ayudar alguien diciéndome cómo pasar de una a otra?

Creo yo que es más fácil empezar pasando de decimal a otra base. El método que yo conozco consiste en ir dividiendo el número decimal por la cantidad de "símbolos". El número será formado leyendo "al reves" los restos de las divisiones. Por ejemplo para pasar a binario el número 55:
> 55/2 = 27, resto 1
> 27/2 = 13, resto 1
> 13/2 = 6, resto 1
> 6/2 = 3, resto 0
> 3/2 = 1, resto 1
>1/2 = 0, resto 1

Ahora lee de abajo hacia arriba, el número 55 en binario es 110111 (se formó con los restos). El método sirve para pasar de decimal a cualquier otra base.
Para pasar de cualquier base a decimal, el método que yo se consiste en... mejor escribo el ejemplo xD, para pasar el 110111 a decimal sería así:
> Posiciones: 5 4 3 2 1 0
> Número:     1 1 0 1 1 1
El "0" esta en la posición "3".
Hay que hacer una sumatoria, el primer término sería:
" 2^0 * 1 ", o sea 'dos' (el número de la base) por 'cero' (la posición) por 'uno' (el dígito que va en esa posición). Así se sacan todos los términos cambiando la posición y finalmente queda:

> 2^0 * 1 + 2^1 * 1 + 2^2 * 1 + 2^3 * 0 + 2^4 * 1 + 2^5 * 1
> = 1 + 2 + 4 + 0 + 2^4 + 2^5 = 55

El método sirve para cualquier base también.

> En el cuarto problema de arrays habláis de incrementar un número, pero¿cómo lo >he de incrementar? Yo he conseguido hasta ahora identificar si en la cadena hay >números y cómo sacarlos (hay que restar 48 ya que en ASCII el 48 es igual a 0). >Ahora quiero saber cómo incrementar, por ejemplo, la cadena '45'.¿ Debe salir >'000000045'?
Lo ha de incrementar.... sumandole 1 O.o
Si le ingresas la cadena '45', debería salir '46'.
Por eso dicen que 'Si el número es "999999999", debe devolver "0".' Ya que en la cadena de largo 9 no podrías guardas 10 cifras.

> En una función de tipo 'bool', si tu dices que devuelva true el resultado es >'1' y false devuelve '0'. ¿Por qué?
> Un saludo, Alejandro y Santiago.

Porque así implementaron esa función :S
La verdad no se la respuesta pero la inventaré, total si me equivoco ya corregirán xD
En C no existían las variables tipo 'bool' y se consideraban los '0' como false, otro número como verdadero. Por ejemplo el 'if' funciona de esa forma.
Entonces supongo que debían seguir esa lógica si querían diseñar una variable que guardara 'verdadero' o 'falso' en C++.


Más información sobre la lista de distribución Cconclase