Ir ao conteúdo
  • Cadastre-se
Calicosjacks

VisualG Fazer um algoritmo que faça divisão sem utilizar (/, div, mod, % )

Recommended Posts

Sei que é um código simples mas sou iniciante e não to conseguindo fazer só conseguir chegar fazendo multiplicação mas a questão diz que não pode, apenas com adição e subtração não consegui chegar ao resultado

 

Construa um código que leia 2 valores (n1 e n2). Em seguida imprima o resultado da divisão inteira de n1 por n2, bem como o resto dessa divisão. Detalhe: Não é permitido utilizar os operadores “div”, “/”, “mod”, “\” ou “%, *”.

n1, n2, c, i, r, resto, multi, aux:inteiro
inicio
      escreva("Digite o dividendo: ")
      leia(n1)
      escreva("Digite o divisor: ")
      leia(n2)
      aux <- n1
      para i de 1 ate n1 faca
           se (n1 >= n2) então
              n1 <- n1-n2
              r <- n2
              c <- c+1
           fimse
      fimpara
      
      multi <- c*n2
      resto <- aux-multi
      
      escreval("Resultado:", c)
      escreva("Resto:", resto)

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Calicosjacks    seu código está funcionando certo , mas você está usando a multiplicação ,  e se for dividir um número por outro menor que ele , então seu código com algumas modificações ficaria assim  :

Algoritmo "divisao recursiva"
Var
  n1, n2, c, i, r, resto, multi, aux:inteiro
inicio
  escreva("Digite o dividendo: ")
  leia(n1)
  escreva("Digite o divisor: ")
  leia(n2)
  aux <- n1
  enquanto n1 >=0 faca
    se n1>=n2 ENTÃO
      c := c+1
    fimse
    n1 := n1-n2
  fimenquanto
  se n1<0 ENTÃO
    r:=n1+n2
  fimse
  escreval("Resultado -:",c)
  escreval("Resto -----:",r)
Fimalgoritmo

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dando uma simplificada:

 

algoritmo "divisão por subtração sucessiva"
var
   divisor, dividendo, aux :inteiro
   quociente               :inteiro
   resto                   :inteiro

inicio
escreva("Digite o dividendo: ")
leia(dividendo)
escreva("Digite o divisor  : ")
leia(divisor)

aux <- dividendo //para preservar o valor original
enquanto aux >= divisor faca //enquanto ainda der para subtrair
   aux <- aux-divisor
   quociente <- quociente+1
fimEnquanto

resto <- aux
     
escreval("Resultado -:",quociente)
escreval("Resto -----:",resto)

fimAlgoritmo

 

Ai fica faltando pelo menos tratar 3 pontos:

- os casos das divisões por 0 (zero), pois pode ser "indefinida" ou "indeterminada";

- as divisões por números negativos. Esse código não funciona, no entanto a operação existe;

- implementar a divisão de números reais.

 

 

 

Em relação a exibição, poderia ficar assim:

escreval(dividendo:6," |_",divisor)
escreval(resto    :6,"   ",quociente)

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×