Ir ao conteúdo

Posts recomendados

Postado

Pessoal eu fiz uma atividade da disciplina de lógica que envolvia reproduzir o jogo do pim. Cada vez que o número impresso pelo contador fosse multiplo de 4 deveria aparecer Pim! ao invés do número. Eu fiz a resolução mais óbvia para os meus conhecimentos que seria usar o resto da divisão do contador por quatro (%), e esta certo. Mas o professor me desafiou a resolver o problema sem usar o módulo e eu pesquisei muita coisa mas não consegui chegar a nenhuma conclusão. O que eu tentei foi comparar o resultado da divisão do contador por 4 (y = c / 4) e colocar como condicional "se" caso o resultado fosse inteiro. Parece um bom plano mas eu não sei escrever esse código. Sugestões? 

Segue o que eu tentei fazer: 

 

programa
{
    
    funcao inicio()
    {
        real c = 1, y = c / 4
        

        enquanto(c <= 30)
        {
            
            se(y == inteiro(y)) //tentando comparar o resultado de c / 4 para saber se é inteiro ou nao
            {
                 
                escreva(" Pim! ")
            }
            senao
            {
                escreva(" ", c, " ")   
            }
            
               c = c + 1
                   
        }
    }
}

 

  • Obrigado 1
  • Membro VIP
Postado

Como 0 não deve entrar na conta:

programa
{
    funcao inicio()
    {
        real a=1, b=4
        enquanto (a <= 30)
        {
            se (a == b)
            {
                escreva("Pim ")
                b=b+4
            }
            senao
            {
                escreva(a," ")   
            }
            a=a+1
        }
    }
}

 

adicionado 24 minutos depois

@Guilherme Vitoriano Pereira, em relação ao seu código original, a ideia é válida, mas temos alguns probleminhas. Segue abaixo como poderia ser:

programa
{   
    funcao inicio()
    {
        real c = 1, y
        enquanto (c <= 30)
        {
            y = c / 4
            se (c == inteiro(y)*4)
            {
                escreva("Pim!  ")
            }
            senao
            {
                escreva(c,"  ")   
            }
            c = c + 1
        }
    }
}

 

Entretanto, um outro problema é que o comando inteiro() não retorna a parte inteira... rs. (pelo menos aqui no Portugol Studio 2.7.4)

 

Dei uma pesquisada para ver se achava um comando equivalente... mas não achei. Se achar, bastar trocar!

 

Segue código equivalente em VisuAlg

algoritmo "FCdH"
var
   c, y :real
inicio
c <- 1
enquanto c <= 30 faca
   y <- c / 4
   se (c = int(y)*4) entao
      escreva (" Pim!")
   senao
      escreva (c)
   fimSe
   c <- c + 1
   fimEnquanto
fimAlgoritmo

tela1.PNG

 

  • 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!