Un programador está atrapado en un problema, su software genera los resultados en binario (0 y 1) y el necesita que el resultado esté en números decimales (0 al 9), crea un código que realice la conversion
Respuestas a la pregunta
Respuesta:
Algoritmo turin
binario<-generarBinario(5) //prueba cambiando el valor del parametro usa numeros positivos
Escribir "Binario generado: ",binario
Escribir "Decimal correspondiente: ",binarioAdecimal(binario)
FinAlgoritmo
SubAlgoritmo decimal<-binarioAdecimal(bin) //este sub algoritmo recibe como parametro una cadena de un numero en binario
decimal<-0 //Variable para guardar el decimal equivalente
//Ciclo FOR, que recorre cada caracter de la cadena de 1s y 0s, y los eleva al numero 2 con la posicion
//representativa del bit binario, ejemplo un 1 en la posicion 5 seria 2^5 =32, eso lo hace siempre
//y cuando el bit sea 1 ya que los bit ceros no se toman en cuanta su posicion
para x<-1 hasta Longitud(bin) Hacer
si Subcadena(bin,x,x)=="1" Entonces
decimal<-decimal+(2^(Longitud(bin)-x))
FinSi
FinPara
FinSubAlgoritmo
SubAlgoritmo binario<-generarBinario(bits) //este sub algoritmo recibe como parametro un entero que representa la longitud del binario a generar
si bits<1 Entonces
bits<-1
FinSi
tamaño<-Aleatorio(1,bits) //cantidad de bits que componen al binario ejemplo 5 bits el numero seria 10011
binarioTemp="" //variable para guardar un binario temporal es necesaria esta variable ya que se pueden generar ceros a la izquierda y no nos interesa
//Ejemplo 00101, los ceros a la izquierda no nos interezan sino que solo 101
binario<-"" //variable que guarda el binario final limpio de ceros innecesarios
//ciclo FOR que genera cada bit
para x<-0 hasta tamaño Hacer
binarioTemp=binarioTemp+ConvertirATexto(Aleatorio(0,1))
FinPara
i<-1
//Ciclo WHILE que busca cada 0 innecesario y guarda la posicion para usarse mas adelante
mientras Subcadena(binarioTemp,i,i)=="0" Hacer
i=i+1
FinMientras
//Ciclo FOR que usa la variable anterior que guarda la pocicion del ultimo cero innecesario para que este FOR solo tome los bits que nos interesan
para x<-i hasta Longitud(binarioTemp) Hacer
binario=binario+subcadena(binarioTemp,x,x)
FinPara
FinSubAlgoritmo