Apunts, preguntes i parides de la FIB
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Canvis de base recursives

4 participantes

Ir abajo

Canvis de base recursives Empty Canvis de base recursives

Missatge  panithadrum Dt 15 Abr 2008 - 22:43

Hey gent heu fet els parcials? Alguns d'ells demanen crear una funcio de canvi de base recursiva... pero no em surt.
Crec q la podria fer pero usant un int& i com a contador..xro aixo es basura... leu fet millor??

panithadrum

Nombre de missatges : 12
Data d'inscripció : 27/03/2008

Tornar a dalt Ir abajo

Canvis de base recursives Empty Fora de temps

Missatge  Yeri Dj 17 Abr 2008 - 14:59

Hola!

Acabo de llegir el missatge. Si encara hi estàs interessat, respon i te'l poso Wink

Una abraçada mac@!
Yeri
Yeri

Nombre de missatges : 29
Data d'inscripció : 13/03/2008
Edad : 35
Ubicació : Barcelona

Tornar a dalt Ir abajo

Canvis de base recursives Empty Re: Canvis de base recursives

Missatge  panithadrum Dg 20 Abr 2008 - 20:51

dons staria be mirar com u as fet..pero no se si u vaig comentar..q es trataria duna funcio int q retornes l'enter i no una funcio void ni res daixo

panithadrum

Nombre de missatges : 12
Data d'inscripció : 27/03/2008

Tornar a dalt Ir abajo

Canvis de base recursives Empty Re: Canvis de base recursives

Missatge  Invitat Dl 21 Abr 2008 - 1:01

La única dificultad de diseñar una función recursiva para cambio de base está en los casos que la base es mayor que 10, por ejemplo con Hexadecimal. Para hacerlo mucho más sencillo se puede hacer una función auxiliar que convierta los números en carácteres si el resto es mayor que 10, por ejemplo;

Codi:
char rest_to_char(int n) {
    if (n < 10) return '0' + n;
    else return 'A' + (n - 10);
}

void base_b(int n, int b) {    //Procedimiento para convertir n a base b
    if (n < b) cout << rest_to_char(n) << endl;
    else {
        base_b(n / b, b);
        cout << rest_to_char(n % b);
    }
    cout << endl;
}

Vendría a ser algo así. No lo he provado, pero en teoría tendría que compilar... (y funcionar xD). Saludos.

Invitat
Invitat


Tornar a dalt Ir abajo

Canvis de base recursives Empty Re: Canvis de base recursives

Missatge  panithadrum Dl 21 Abr 2008 - 20:20

ya lo veo xDD y por la misma razon no se podria hacer una funcion int que devuelva el entero en base 20 por ejemplo..

pero mi pregunta sigue sin ser respondida..xDD lo pondre asi:

Cread una funcion "int base2(int x);" que devuelva el entero x de base 10 en base 2.
o sea no tendria que tener cout si no tener un return x.
pero bueno ya esto da igual, ya que no va a entrar...por cierto, alguien mas aparte de yeri, edu y yo ha aprobado?

panithadrum

Nombre de missatges : 12
Data d'inscripció : 27/03/2008

Tornar a dalt Ir abajo

Canvis de base recursives Empty Re: Canvis de base recursives

Missatge  KuN Dt 22 Abr 2008 - 1:29

panithadrum escrigué:ya lo veo xDD y por la misma razon no se podria hacer una funcion int que devuelva el entero en base 20 por ejemplo..

pero mi pregunta sigue sin ser respondida..xDD lo pondre asi:

Cread una funcion "int base2(int x);" que devuelva el entero x de base 10 en base 2.
o sea no tendria que tener cout si no tener un return x.
pero bueno ya esto da igual, ya que no va a entrar...por cierto, alguien mas aparte de yeri, edu y yo ha aprobado?


hazlo con el paint, es mas facil...
si kieres complicarte mas.... photoshop o el buscaminas mismo xddd
KuN
KuN

Nombre de missatges : 228
Data d'inscripció : 13/03/2008

Tornar a dalt Ir abajo

Canvis de base recursives Empty Re: Canvis de base recursives

Missatge  Invitat Dt 22 Abr 2008 - 13:08

KuN escrigué:
panithadrum escrigué:ya lo veo xDD y por la misma razon no se podria hacer una funcion int que devuelva el entero en base 20 por ejemplo..

pero mi pregunta sigue sin ser respondida..xDD lo pondre asi:

Cread una funcion "int base2(int x);" que devuelva el entero x de base 10 en base 2.
o sea no tendria que tener cout si no tener un return x.
pero bueno ya esto da igual, ya que no va a entrar...por cierto, alguien mas aparte de yeri, edu y yo ha aprobado?


hazlo con el paint, es mas facil...
si kieres complicarte mas.... photoshop o el buscaminas mismo xddd

yo creo k cn el lapiz dl paint ya ira bien para k salga Wink

Invitat
Invitat


Tornar a dalt Ir abajo

Canvis de base recursives Empty Re: Canvis de base recursives

Missatge  Eduard Dj 8 Maig 2008 - 12:46

panithadrum escrigué:Cread una funcion "int base2(int x);" que devuelva el entero x de base 10 en base 2.
o sea no tendria que tener cout si no tener un return x.

No sé si entenc bé el què vols dir, però diria que no veus bé el què guarda un int. Un int et guardarà un valor, indiferentment de la base d'aquest número el valor serà el mateix. Només canvia la manera de com el representes a l'hora de llegir-lo o escriure'l.

És a dir, probablement el que t'interessa és tenir-ho guardat en una string, ja que al cap i a la fi és una cosa que només et serveix per escriure o llegir.

El que crec que volies fer, és una funció que el valor int que et retorna equivalgui a número que quan representat en decimal quedi com el número representat en binari. Fixa't que estaries canviant el valor del número si fas això, no la seva representació, i a més, seria una cosa bastant poc generalitzable i ineficient, per exemple, només podries emmagatzemar valors de fins a 1023 ja que l'int màxim és 2147483647 i t'implicaria que el número més gran que hi pots ficar tindria la mateixa longitud: 1111111111 (1023).

En resum, guarda el que toca en un int, i només tracta la representació quan et toqui representar-ho.

Eduard

Nombre de missatges : 4
Data d'inscripció : 08/05/2008

Tornar a dalt Ir abajo

Canvis de base recursives Empty Re: Canvis de base recursives

Missatge  Invitat Dl 26 Maig 2008 - 17:36

Us deixo aquesta acció recursiva de canvi de base que és la canya.
Canvia a qualsevol base recurisvament, inclós les de base major a 10!!!

Codi:
// Canvi a qualsevol base recursivament.

void escriu_nombre(int x, int b) {
    if (x >= b) escriu_nombre(x/b, b);
    if (x%b < 10) cout << x%b;
    else cout << char('A' + x%b - 10);
 }

Invitat
Invitat


Tornar a dalt Ir abajo

Canvis de base recursives Empty Re: Canvis de base recursives

Missatge  Contenido patrocinado


Contenido patrocinado


Tornar a dalt Ir abajo

Tornar a dalt


 
Permisos d'aquest fòrum:
No pots respondre a temes en aquest fòrum