Ir ao conteúdo

Posts recomendados

Postado

Estudando aqui a hierarquia dos operadores matemáticos me deparei com esse problema.

 

Estou rodando essa operação: 11 mod 3 ^ 2 (pela hierarquia ele deveria primeiro executar o expoente e depois calcular o resto com o numero 11), ficando o valor igual a 3.

 

Porém, quando rodo na aplicação está dando um número totalmente diferente (-1). Colocando parênteses 11 mod ( 3 ^ 2) também apresenta o mesmo resultado.

 

Alguém sabe o que pode ser?

 

Segue o código abaixo:

Algoritmo "hierarquia"
Var
   r: real

Inicio
   r <- 11 mod 3 ^ 2
   escreval("R: ",r)
Fimalgoritmo

 

  • Obrigado 1
  • Solução
Postado

É só mais um bug do VisuAlg, 3 ^ 2 retorna um número real, mas o mod precisa de um número inteiro.

 

Você poderia usar a função Int(), para converter o valor de 3 ^ 2 para um inteiro.

r <- 11 mod Int(3 ^ 2)

Mas aí a precedência de operadores não se aplicaria.

 

  • Obrigado 2
  • Membro VIP
Postado
Em 18/07/2022 às 18:17, Marcelo José Aragão Ramos disse:

quando rodo na aplicação está dando um número totalmente diferente (-1)


Esse -1 pode ser algum código de erro interno (de alguma linguagem de programação do programa VisualG) ou bug mesmo... o curioso que se colocar um número com expoente antes funciona normalmente... vá entender. Se inserir um número real no lado esquerdo também roda, só que de alguma forma deve está "pegando apenas a parte inteira" nesses casos...

Tá funcionando mais ou menos assim:
 

r <- Int(<valor_real>) mod <valor_inteiro>

Adendo: o Int() basicamente retorna um inteiro que seria parte inteira do real informado. Ex.: 7.8 retorna 7.

 

Só um detalhe: como o "resto da divisão" é também um inteiro, o r poderia ser do tipo inteiro mesmo. Usar real ou inteiro vai do contexto... mas no caso aí, não tem motivo para ser real. (Já que apenas recebe o valor e exibe na tela... como é sempre inteiro, mais coerente utilizar inteiro).

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!