Canvis de base recursives
4 participantes
Pàgina 1 de 1
Canvis de base recursives
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??
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
Fora de temps
Hola!
Acabo de llegir el missatge. Si encara hi estàs interessat, respon i te'l poso
Una abraçada mac@!
Acabo de llegir el missatge. Si encara hi estàs interessat, respon i te'l poso
Una abraçada mac@!
Yeri- Nombre de missatges : 29
Data d'inscripció : 13/03/2008
Edad : 35
Ubicació : Barcelona
Re: Canvis de base recursives
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
Re: Canvis de base recursives
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;
Vendría a ser algo así. No lo he provado, pero en teoría tendría que compilar... (y funcionar xD). Saludos.
- 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
Re: Canvis de base recursives
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?
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
Re: Canvis de base recursives
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- Nombre de missatges : 228
Data d'inscripció : 13/03/2008
Re: Canvis de base recursives
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
Invitat- Invitat
Re: Canvis de base recursives
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
Re: Canvis de base recursives
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!!!
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
Pàgina 1 de 1
Permisos d'aquest fòrum:
No pots respondre a temes en aquest fòrum