domingo, 19 de setembro de 2010

Exercicio 8 capitulo 3

O que será escrito na tela, supondo que o valor de n é 29? Mostre o teste de mesa utilizado para
determinar o valor de b.
 algoritmo "Dec2Bin"
 var
   b: literal
   n, q, r: inteiro
inicio
    b <- " "
    escreva("Entre com um número")
    leia(n)

    q <- n
    r<- q % 2
    q <- q\2
    se r = 0 entao
      b <- "0" + b
    senao
      b <- "1" + b
    fimse

    r <- q % 2
    q <- q\2
    se r = 0 entao
      b <- "0" + b
    senao
      b <- "1" + b
    fimse

    r <- q % 2
    q <- q\2
    se r = 0 entao
      b <- "0" + b
    senao
      b <- "1" + b
    fimse

    r <- q % 2
    q <- q\2
    se r = 0 entao
      b <- "0" + b
    senao
      b <- "1" + b
    fimse

    r <- q % 2
    q <- q\2
    se r = 0 entao
      b <- "0" + b
    senao
      b <- "1" + b
    fimse

    escreva(n, " em decimal é representado por ", b, " em binário")
fimalgoritmo

Seguindo esse algoritmo será impresso 11111 SEMPRE, independente do valor de 'n'
Para corrigir basta trocar o 'numerico' por 'inteiro', nao havera problemas pois estamos convertendo numeros inteiros.

A cada modulo (separados por uma linha) é feito o calculo do novo dividendo e do resto, verifica se o resto é zero ou um e acrescenta na variavel 'b'. Porque a variavel 'b' nao podia ser do tipo inteiro? Pois zero a esquerda nao vale nada, entao o binario 01010 (10 em decimal) seria mostrado '1010'

Nenhum comentário:

Postar um comentário