Ir ao conteúdo
  • Cadastre-se

VisualG Cálculos com números pares e ímpares


Posts recomendados

To nessa prova infeliz n consigo responder vou repetir

 

Desenvolva um algoritmo que leia N valores inteiros (0- finaliza) que apresente: 

  • quantidade de valores acima de 50
  • soma e a media dos valores pares
  • soma e a media dos valores impares
  • diferença entre a soma dos valores pares e impares.
     

Programa: 
 

algoritmo "semnome"
// Disciplina  : [Linguagem e Lógica de Programação]
// Professor  : Antonio Carlos Nicolodi
// Descrição  : Aqui você descreve o que o programa faz! (função)
// Autor(a)  : Nome do(a) aluno(a)
// Data atual : 16/12/2020
Var
   // Seção de Declarações das variáveis
   num: vetor [0..100] de inteiro
   aux,i,p,q : inteiro
   par, impar: inteiro

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   q<-1
   para i de 0 ate 100 faca
      escreva("Informe o",i+1,"º número : ")
      leia(aux)
      se aux % 2 <> 0 entao
         se p < 100 entao
            num[p]<-aux
            p<-p+2
         fimse
      senao
         se q < 100 entao
            num[q]<-aux
            q<-q+2
         fimse
      fimse
   fimpara
   limpatela

   se (aux>=50) entao
      escreval("Os numeros maiores que 50 são", p)
   fimse
   se
      escreval
      para i de 0 ate 100 faca
         escreva(i," Posição Do Vetor Tem O Número ",num[i])
         se num[i]%2=0 entao
            par<- num[i]%2=0
            escreval("Par")
         senao
            escreval("ímpar")
         fimse
      fimpara
      se aux=0 entao
Fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@MidoraQuebraTudo, simplesmente pare para prestar mais atenção naquilo que está sendo pedido.

 

Veja o enunciado:

 

7 horas atrás, MidoraQuebraTudo disse:

Desenvolva um algoritmo que leia N valores inteiros (0- finaliza) que apresente: 

  • quantidade de valores acima de 50
  • soma e a media dos valores pares
  • soma e a media dos valores impares
  • diferença entre a soma dos valores pares e impares.

 

A primeira linha tem:

7 horas atrás, MidoraQuebraTudo disse:

Desenvolva um algoritmo que leia N valores inteiros (0- finaliza) que apresente: 

 

Você entendeu o que foi solicitado? Em qual parte do teu código você está fazendo isso?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@MidoraQuebraTudo, simplesmente pare para prestar mais atenção naquilo que está sendo pedido e no que está sendo orientado.

 

 

11 horas atrás, MidoraQuebraTudo disse:

Desenvolva um algoritmo que leia N valores inteiros (0- finaliza) [...]

 

Ele está solicitando que fique lendo valores até que seja inserido o 0. Algo como:

 

algoritmo "semnome"
var
   num: inteiro

inicio
   repita
      escreva ("Numero: ")
      leia(num)


   ate num = 0
fimAlgoritmo

 

Aí, implementa só mais uma coisa, exemplo: 

 

11 horas atrás, MidoraQuebraTudo disse:

Desenvolva um algoritmo que leia N valores inteiros (0- finaliza) que apresente: 

  • quantidade de valores acima de 50

 

 

Poderia fazer algo como:

 

algoritmo "semnome"
var
   num: inteiro
   qtdMaior50: inteiro

inicio
   qtdMaior50 <- 0
   repita
      escreva ("Numero: ")
      leia(num)
      se num > 50 entao
         qtdMaior50 <- qtdMaior50 + 1
      fimSe
   ate num = 0
   escreval("Quantidade de valores acima de 50: ", qtdMaior50:1)
fimAlgoritmo

 

 

Pronto.

 

@MidoraQuebraTudo, pegue esse código acima. Já adianto que ele não está funcionando corretamente. Faça testes e ajuste o que tem que ajustar. Se tiver dúvidas, pare para entender o que está acontecendo e se vire para corrigir... caso não consiga, pode ficar a vontade para tirar dúvidas aqui... mas não tente fazer outra coisa antes de corrigir esse trecho.

 

Após conseguir deixar esse trecho funcionando, ou seja: contanto corretamente a quantidade de maiores que 50, faça um próximo: você vai fazer apenas a soma valores pares e exibir o resultado na tela. Só isso. Se tiver dúvidas, se vire para tentar corrigir, caso tenha dúvidas sobre alguma parte, é só postar.

 

Poste o código aqui.

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Acredito que você não leu direito o que foi proposto. Não entendi quase nada do que mostrou, mas de forma bem simplificada, segue o que fiz.

 

PS: Gostei do desafio (foi ao menos pra mim, mero iniciante)

 

algoritmo "semnome"
// Função :
// Autor :
// Data : 25/12/2020
// Seção de Declarações 
var
      valor_par, valor_impar, qtd_valor_par, qtd_valor_impar, media_par, media_impar, diferenca: real
      valor, acima50: inteiro
inicio
      repita
      
            escreva( "Informe um valor inteiro: " )
            leia( valor )

            se ( valor > 50 ) entao
               acima50 <- acima50 + 1
            fimse

            se ( ( valor % 2 ) = 0 ) entao
               //Então o valor é par
               valor_par <- valor_par + valor //Realiza a soma
               qtd_valor_par <- qtd_valor_par + 1 //Conta quantos valores pares existem
            senao
                 //Então o valor é ímpar
                 valor_impar <- valor_impar + valor //Realiza a soma
                 qtd_valor_impar <- qtd_valor_impar + 1 //Conta quantos valores ímpares existem
            fimse

      ate ( valor = 0 )
      
          media_par <- valor_par / qtd_valor_par
          media_impar <- valor_impar / qtd_valor_impar
          
          diferenca <- valor_par - valor_impar

      limpatela

      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS ACIMA DE 50: ", acima50 )
      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS PARES" )
      escreval( "SOMA: ", valor_par )
      escreval( "QUANTIDADE: ", qtd_valor_par )//Não entendi porque ele está pegando o zero pra quantidade, mas em geral, funciona. =]
      escreval( "MÉDIA: ", media_par )
      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS ÍMPARES" )
      escreval( "SOMA: ", valor_impar )
      escreval( "QUANTIDADE: ", qtd_valor_impar )
      escreval( "MÉDIA: ", media_impar )
      escreval( "---------------------------------------" )
      escreval( "> DIFERENÇA ENTRE PARES E ÍMPARES: ", diferenca )
      escreval( "---------------------------------------" )


fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

Vi o perrengue de um colega no fórum, aceitei o desafio, e me prontifiquei a resolver o problema (detalhe, sou iniciante em programação). A atividade pede:

Citação

 

Desenvolva um algoritmo que leia N valores inteiros (0- finaliza) que apresente: 

- quantidade de valores acima de 50

- soma e a media dos valores pares

- soma e a media dos valores impares

- diferença entre a soma dos valores pares e impares.

 

 

Consegui construir e deixá-lo funcional...

 

algoritmo "semnome"
// Função :
// Autor :
// Data : 25/12/2020
// Seção de Declarações 
var
      valor_par, valor_impar, qtd_valor_par, qtd_valor_impar, media_par, media_impar, diferenca: real
      valor, acima50: inteiro
inicio
      repita
      
            escreva( "Informe um valor inteiro: " )
            leia( valor )

            se ( valor > 50 ) entao
               acima50 <- acima50 + 1
            fimse

            se ( ( valor % 2 ) = 0 ) entao
               //Então o valor é par
               valor_par <- valor_par + valor //Realiza a soma
               qtd_valor_par <- qtd_valor_par + 1 //Conta quantos valores pares existem
            senao
                 //Então o valor é ímpar
                 valor_impar <- valor_impar + valor //Realiza a soma
                 qtd_valor_impar <- qtd_valor_impar + 1 //Conta quantos valores ímpares existem
            fimse

      ate ( valor = 0 )
      
          media_par <- valor_par / qtd_valor_par
          media_impar <- valor_impar / qtd_valor_impar
          
          diferenca <- valor_par - valor_impar

      limpatela

      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS ACIMA DE 50: ", acima50 )
      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS PARES" )
      escreval( "SOMA: ", valor_par )
      escreval( "QUANTIDADE: ", qtd_valor_par )
      escreval( "MÉDIA: ", media_par )
      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS ÍMPARES" )
      escreval( "SOMA: ", valor_impar )
      escreval( "QUANTIDADE: ", qtd_valor_impar )
      escreval( "MÉDIA: ", media_impar )
      escreval( "---------------------------------------" )
      escreval( "> DIFERENÇA ENTRE PARES E ÍMPARES: ", diferenca )
      escreval( "---------------------------------------" )


fimalgoritmo

 

O que me incomoda é que no momento em que executa a primeira vez a estrutura de repetição o bloco de código que verifica se é número par, ele conta o 'zero', que é utilizado para sair do loop, como item par, logo, em quantidade apresenta 2 valores ao invés de apenas 1.

 

Há possibilidade de ajuda? 🙁

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Hatchiko   para ele não usar o zero do final , coloque um se logo depois de leia , e se for igual a zero não faz nenhum calculo e sai , e seu código está bom , mas tem esses parênteses desnecessários ,  e seu código poderia ser assim  :

algoritmo "soma pares e impares"
// Data : 25/12/2020
var
  valor_par, valor_impar     : real
  qtd_valor_impar, media_par : real
  qtd_valor_par              : real
  media_impar ,diferenca     : real
  valor, acima50             : inteiro
inicio
  repita
    escreva( "Informe um valor inteiro: " )
    leia( valor )
    se valor <> 0 entao                        //  se for zero não faz nenhum calcuLo e sai
      se valor > 50 entao
        acima50 <- acima50 + 1
      fimse
      se valor % 2 = 0 entao                   //  Então o valor é par
        valor_par <- valor_par + valor         //  Realiza a soma
        qtd_valor_par <- qtd_valor_par + 1     //  Conta quantos valores pares existem
      senao                                    //  senao Então o valor é ímpar
        valor_impar <- valor_impar + valor     //  Realiza a soma
        qtd_valor_impar <- qtd_valor_impar + 1 //  Conta quantos valores ímpares existem
      fimse
    fimse
  ate valor = 0
  media_par <- valor_par / qtd_valor_par
  media_impar <- valor_impar / qtd_valor_impar
  diferenca <- valor_par - valor_impar
  limpatela
  escreval( "-----------------------------------------"             )
  escreval( "> NÚMEROS ACIMA DE 50 -------------: ", acima50        )
  escreval( "-----------------------------------------"             )
  escreval( "> NÚMEROS PARES"                                       )
  escreval( "SOMA ------------------------------: ", valor_par      )
  escreval( "QUANTIDADE ------------------------: ", qtd_valor_par  )
  escreval( "MÉDIA -----------------------------: ", media_par      )
  escreval( "-----------------------------------------"             )
  escreval( "> NÚMEROS ÍMPARES"                                     )
  escreval( "SOMA ------------------------------: ", valor_impar    )
  escreval( "QUANTIDADE ------------------------: ", qtd_valor_impar)
  escreval( "MÉDIA -----------------------------: ", media_impar    )
  escreval( "-----------------------------------------"             )
  escreval( "> DIFERENÇA ENTRE PARES E ÍMPARES -: ", diferenca      )
  escreval( "-----------------------------------------"             )
fimalgoritmo

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@devair1010

Ah sim, entendi. Agradecido pela ajuda. 😃

Quanto aos parênteses desnecessários é mais para organização minha mesmo. 😅

 @devair1010  Utilizando conforme orientou, se eu informar zero como primeiro valor ele não executa mais nada, em contrapartida o programa trava apresentando a mensagem:

Citação

Invalid floating point operation.

e para sair, de fato, apenas utilizando o comando de Parar localizado no Menu ou por meio das teclas CTRL + F2. Porquê isso acontece?

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Hatchiko     você pode colocar o comando ate valor = 0  três linhas para baixo  e resolverá bem , 

      senao                                    //  senao Então o valor é ímpar
        valor_impar <- valor_impar + valor     //  Realiza a soma
        qtd_valor_impar <- qtd_valor_impar + 1 //  Conta quantos valores ímpares existem
      fimse
      //fimse
      //ate valor = 0
      media_par <- valor_par / qtd_valor_par
      media_impar <- valor_impar / qtd_valor_impar
      diferenca <- valor_par - valor_impar
    fimse               
  ate valor = 0               
  limpatela

 

Link para o comentário
Compartilhar em outros sites

Hey colega, segue abaixo o código atualizado e funcionando perfeitamente. Espero que entenda e supra seu problema a fim de entender o exercício proposto.

algoritmo "semnome"
// Função :
// Autor :
// Data : 25/12/2020
// Seção de Declarações
var
      valor_par, valor_impar, qtd_valor_par, qtd_valor_impar, media_par, media_impar, diferenca: real
      valor, acima50, contador: inteiro
inicio
      contador <- 1 //O contador é apenas deixar a solicitação do valor mais convidativo
      repita

            escreva( "Informe ", contador, "º valor inteiro: " )
            leia( valor )

            contador <- contador + 1

            se ( valor = 0 ) entao
                 escreva( "Programa encerrado!" )
            senao
                  se ( valor > 50 ) entao
                     acima50 <- acima50 + 1
                  fimse

                  se ( ( valor % 2 ) = 0 ) entao
                     //Então o valor é par
                     valor_par <- valor_par + valor //Realiza a soma
                     qtd_valor_par <- qtd_valor_par + 1 //Conta quantos valores pares existem
                  senao
                       //Então o valor é ímpar
                       valor_impar <- valor_impar + valor //Realiza a soma
                       qtd_valor_impar <- qtd_valor_impar + 1 //Conta quantos valores ímpares existem
                  fimse
            fimse

      ate ( valor = 0 )

          media_par <- valor_par / qtd_valor_par
          media_impar <- valor_impar / qtd_valor_impar

          diferenca <- valor_par - valor_impar

      limpatela

      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS ACIMA DE 50: ", acima50 )
      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS PARES" )
      escreval( "SOMA: ", valor_par )
      escreval( "QUANTIDADE: ", qtd_valor_par )
      escreval( "MÉDIA: ", media_par )
      escreval( "---------------------------------------" )
      escreval( "> NÚMEROS ÍMPARES" )
      escreval( "SOMA: ", valor_impar )
      escreval( "QUANTIDADE: ", qtd_valor_impar )
      escreval( "MÉDIA: ", media_impar )
      escreval( "---------------------------------------" )
      escreval( "> DIFERENÇA ENTRE PARES E ÍMPARES: ", diferenca )
      escreval( "---------------------------------------" )


fimalgoritmo

 

Resultado na imagem em anexo.

 

Sem título 2.png

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Em 25/12/2020 às 23:25, devair1010 disse:

@Hatchiko     você pode colocar o comando ate valor = 0  três linhas para baixo  e resolverá bem , 

 

 

Creio que não... e de um modo geral, os cálculos deveriam fica após o ate mesmo... já que precisam ser feito apenas uma única vez.

 

 

Em 25/12/2020 às 22:09, Hatchiko disse:

@devair1010  Utilizando conforme orientou, se eu informar zero como primeiro valor ele não executa mais nada, em contrapartida o programa trava apresentando a mensagem:

Citação

Invalid floating point operation.

e para sair, de fato, apenas utilizando o comando de Parar localizado no Menu ou por meio das teclas CTRL + F2. Porquê isso acontece?

@Hatchiko, tente entender o que o erro significa... No VisualG, nem sempre a mensagem ajuda, mas já é um pontapé inicial. Uma forma interessante de ver onde está dando esse erro é pressionando F8 (em vez de F9) e ir seguindo passo a posso o fluxo do programa. Veja onde está o erro, entenda o erro e daí busque uma solução.

 

Adendo: esse problema já existia antes das novas alterações... ou seja: é bom ter a noção que não necessariamente "um problema detectado após uma alteração é fruto da alteração em si". É preciso exercitar e praticar a abstração.

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

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