Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gustavo Rodrigues Torre

[Resolvido] Repetição 2

Recommended Posts

Faça um algoritmo que leia uma quantidade não determinada de números positivos. Calcule a quantidade de números pares e ímpares, a média de valores pares e a média geral dos números lidos. O número negativo encerrará a leitura.

 

Este e parcecido com o que você resolveu para mim mais esta dando erro

 

algoritmo "contagem 2 "

// Função :

// Autor :

// Data : 01/11/07

// Seção de Declarações

var

somap,somai : inteiro

numeros : inteiro

ma, mg : real

n : inteiro

c : inteiro

inicio

// Seção de Comandos

numeros <- 0

somap <- 0

somai <- 0

repita

 

escreva("Entre com um valor")

leia(n)

 

se (n > 0) entao // aqui ira contar os numeros positivos

//somap <- n + somap isso eh um acumulador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + n.

somap <- somap + 1 // esse eh o chamado contador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + 1

fimse

 

se (n < 0) entao

soman <- 1 + soman

fimse

 

numeros <- numeros + n // aqui eh um acumulador

ate n = 0

 

ma <- numeros / (somap + somai) //media dos numeros lidos

pg <- somap / numeros //media dos numeros pares

 

escreval

escreval("A quantidade de numeros pares ",somap)

escreval("A quantidade de numeros impares ",somai)

escreval("A media de numeros pares e impares ",ma)

escreval("A media geral",mg)

 

fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse algoritmo que voce postou é para calcular a quantidade de números positivos e negativos.

O que voce precisa é contar os pares e os ímpares.

Pergunto: como identifico se um número é par?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, substitua os dois "se" que contam os positivos e negativos por:

 

se (n MOD 2 = 0) entao
   // incremente a variavel que conta os pares
senao
   // incremente a variavel que conta os impares
fimse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria assim Kandrade

 

algoritmo "contagem 2 "

// Função :

// Autor :

// Data : 01/11/07

// Seção de Declarações

var

somap,somai : inteiro

numeros : inteiro

ma, mg : real

n : inteiro

c : inteiro

inicio

// Seção de Comandos

numeros <- 0

somap <- 0

somai <- 0

repita

 

escreva("Entre com um valor")

leia(n)

 

se (n % 2 = 0) entao // aqui ira contar os numeros positivos

//somap <- n + somap isso eh um acumulador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + n.

somap <- somap + 1 // esse eh o chamado contador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + 1

senao

somai <- 1 + somai

fimse

 

 

numeros <- numeros + n // aqui eh um acumulador

 

ate n = 0

 

ma <- numeros / (somap + somai) //media dos numeros lidos

mg <- somap / numeros //media dos numeros pares

 

escreval

escreval("A quantidade de numeros pares ",somap)

escreval("A quantidade de numeros impares ",somai)

escreval("A media de numeros pares e impares ",ma)

escreval("A media geral",mg)

 

fimalgoritmo

 

 

Então, substitua os dois "se" que contam os positivos e negativos por:

 

se (n MOD 2 = 0) entao
   // incremente a variavel que conta os pares
senao
   // incremente a variavel que conta os impares
fimse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu só tirei uma condição do laço

 

E o algoritmo esta contando um numero para a mais

 

algoritmo "contagem 2 "

// Função :

// Autor :

// Data : 01/11/07

// Seção de Declarações

var

somap,somai : inteiro

numeros : inteiro

ma, mg : real

n : inteiro

c : inteiro

inicio

// Seção de Comandos

numeros <- 0

somap <- 0

somai <- 0

repita

 

escreva("Entre com um valor")

leia(n)

 

se (n % 2 = 0) entao // aqui ira contar os numeros positivos

//somap <- n + somap isso eh um acumulador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + n.

somap <- somap + 1 // esse eh o chamado contador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + 1

senao

somai <- 1 + somai

fimse

 

 

numeros <- numeros + n // aqui eh um acumulador

 

ate (n = 0)

 

ma <- numeros / (somap + somai) //media dos numeros lidos

mg <- somap / numeros //media dos numeros pares

 

escreval

escreval("A quantidade de numeros pares ",somap)

escreval("A quantidade de numeros impares ",somai)

escreval("A media de numeros pares e impares ",ma)

escreval("A media geral",mg)

 

fimalgoritmo

 

 

Faz um algoritmo do zero, voce está misturando tudo.

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_ohmy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faca o teste e veja o que acontece se voce entrar com um número negativo.

 

Ele executa toda a lógica antes de sair do laco.

 

Para arrumar isso tem várias maneiras, uma delas é inserir um interrompa logo após ler o valor assim:

 

repita
   escreva("Entre com um valor")
   leia(n)
   se (n < 0) entao
      interrompa
   fimse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o interrompa o algoritmo da erro

Eu fiz assim agora e esta dando o mesmo erro de antes

 

 

algoritmo "contagem 2 "

// Função : Faça um algoritmo/programa que leia uma quantidade não determinada

//de números positivos. Calcule a quantidade de números pares e ímpares,

//a média de valores pares e a média geral dos números lidos.

//O número negativo encerrará a leitura.

// Autor :

// Data : 01/11/07

// Seção de Declarações

var

somap,somai : inteiro

acm_p, acm_i : inteiro

numeros : inteiro

mp, mg : real

n : inteiro

c : inteiro

inicio

// Seção de Comandos

numeros <- 0

somap <- 0

somai <- 0

acm_p <- 0

acm_i <- 0

repita

 

escreva("Entre com um valor")

leia(n)

 

se (n % 2 = 0) entao // aqui ira contar os numeros pares

acm_p <- acm_p + n //esse eh o chamado contador

somap <- somap + 1 //isso eh um acumulador,

fimse

 

se (n % 2 <> 0) entao // aqui ira contar os numeros impares

acm_i <- acm_i + n //esse eh o chamado contador

somai <- somai + 1 //isso eh um acumulador,

fimse

 

 

numeros <- numeros + 1 // aqui eh um acumulador

 

ate (n = 0)

 

mg <- (somap + somai) / numeros //media dos numeros lidos

mp <- acm_p / somap //media dos numeros pares

 

escreval

escreval("A quantidade de numeros pares ",somap)

escreval("A quantidade de numeros impares ",somai)

escreval("A media de numeros pares e impares ",mg)

escreval("A media geral",mp)

 

fimalgoritmo

 

 

 

 

Faca o teste e veja o que acontece se voce entrar com um número negativo.

 

Ele executa toda a lógica antes de sair do laco.

 

Para arrumar isso tem várias maneiras, uma delas é inserir um interrompa logo após ler o valor assim:

 

repita
   escreva("Entre com um valor")
   leia(n)
   se (n < 0) entao
      interrompa
   fimse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja a diferenca:

 

- Voce está lendo, executando os cálculos e depois testando se o valor é válido.

 

Sequencia correta:

 

- Ler, testar se o valor é válido e só depois então fazer os calculos.

 

escreva("Entre com um valor")
leia(n)

repita

   se (n % 2 = 0) entao // aqui ira contar os numeros pares
	  acm_p <- acm_p + n //esse eh o chamado contador
	  somap <- somap + 1 //isso eh um acumulador,
   fimse

   se (n % 2 <> 0) entao // aqui ira contar os numeros impares
	  acm_i <- acm_i + n //esse eh o chamado contador
	  somai <- somai + 1 //isso eh um acumulador,
   fimse

   numeros <- numeros + 1 // aqui eh um acumulador

   escreva("Entre com um valor")
   leia(n)
ate (n = 0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodou certo

Problema então esta resolvido?

 

Veja a diferenca:

 

- Voce está lendo, executando os cálculos e depois testando se o valor é válido.

 

Sequencia correta:

 

- Ler, testar se o valor é válido e só depois então fazer os calculos.

 

escreva("Entre com um valor")
leia(n)

repita

   se (n % 2 = 0) entao // aqui ira contar os numeros pares
	  acm_p <- acm_p + n //esse eh o chamado contador
	  somap <- somap + 1 //isso eh um acumulador,
   fimse

   se (n % 2 <> 0) entao // aqui ira contar os numeros impares
	  acm_i <- acm_i + n //esse eh o chamado contador
	  somai <- somai + 1 //isso eh um acumulador,
   fimse

   numeros <- numeros + 1 // aqui eh um acumulador

   escreva("Entre com um valor")
   leia(n)
ate (n = 0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.