| Duración |
Del 10 Al 26 de junio 2009 (3 semanas) |
| Horario: |
De 10a.m. a 12 p.m. |
| Dias: | Miércoles y viernes |
| Costo: | Q.500.00 |
| Salon: | Laboratorio 215 |

Ciencias de la computación III - Estructuras de máquinas
Reto #01 - Cambio de Base
Adrián CatalánPropósito
- Trabajar con bases no decimales
- Programar en C
- Divertirnos ;)
Cambio de base
Descripción
Para este reto tendrán que hacer un sencillo programa de cambio de base,
un programa que cambie un numero de una base m a una base n.
Las especificaciones para este son las siguientes:
- Deberan leer los numeros de la siguiente manera
./a.out numero base_m base_n"
eso quiere decir que la base_m es la base en la cual se encuentra numero y base_n a la
la base que hay que pasarlo. Como ejemplo:
./a.out 15 10 2
esto deberia sacar 1111.
Como se pueden dar cuenta los numero se deben leer de los argumentos de la linea dea comandos.
- El rango en el cual estan las bases es [2, 36], como ejemplo para la base 11
los digitos de este son {0,1,2,3,4,5,6,7,8,9,A}, por lo tanto careceria de sentido que
pusieran que BBF1 fuera de base 11, ustedes tambien tienen que revisar esto.
Un Poco de Ayuda.
Como sabemos que no se recuerdan mucho de esto(o es la primera vez que lo ven) les vamos a
dar un par de ejemplos.
De base 10 a base n
El algoritmo consite en dividir el numero de base 10 dentro de n(la base a la que lo queremos
pasar) y el cociente seguirlo dividiendo hasta que sea 0 y con los residuos se obtiene el numero
en la base que queremos. Ejemplo(% = modulo):
38 base 10 a base 3
38 / 3 = 12 & 38 % 3 = 2
12 / 3 = 4 & 12 % 3 = 0
4 / 3 = 1 & 4 % 3 = 1
1 / 3 = 0 & 1 % 3 = 1
ahora que el cociente es 0 paramos de dividir y los residuos leyendolos en orden inverso dan el nuevo
numero en base 3 es decir 1102.
Otro ejemplo 15 a base 2
15 / 2 = 7 & 15 % 2 = 1
7 / 2 = 3 & 7 % 2 = 1
3 / 2 = 1 & 3 % 2 = 1
1 / 2 = 0 & 1 % 2 = 1
nuevamente de el ultimo al primero 15 en base 2 es 1111.
De base n a base 10
Para este caso es mucho mas sencillo simplemente se multiplica desde el digito menos significante hasta
el digito mas significante por n^i donde i empieza desde 0 y cada uno de esos productos se suma. Ejemplo:
1102 de base 3 a base 10
2 * 3^0 = 2
0 * 3^1 = 0
1 * 3^2 = 9
1 * 3^3 = 27
ahora sumando todos 2 + 0 + 9 + 27 = 38 en base 10.
Otro ejemplo 1111 base 2 a base 10
1 * 2^0 = 1
1 * 2^1 = 2
1 * 2^2 = 4
1 * 2^3 = 8
entonces 1 + 2 + 4 + 8 = 15 en base 10.
De base n a base m
Para este caso la manera mas sencilla de hacerlo es aplicar los dos conocimientos anteriormente mencionados
es decir de la base n a la base 10 y de base 10 a base m.
Entrega
La entrega se realizará a través del GES el día Viernes 30 de enero del 2009, debe enviar un archivo llamado seccionCarnet.c conteniendo todas las funciones necesarias para que el programa funcione correctamente.
NOTA debe seguir instrucciones y entregar únicamente un archivo .c, no enviar .cpp o .txt, no enviar el ejecutable .exe y no enviar archivos comprimidos .zip o .rar
De no seguir las instrucciones se le penalizará con puntos menos en su asignación
- Inicie sesión para enviar comentarios