Ir ao conteúdo

Posts recomendados

Postado

Alguém me ajuda, eu estou fazendo a média da forma correta?

O problema:

 

Citação

Podemos observar nos noticiários acerca dos números alarmantes de infectados e mortos em razão do novo coronavírus. Os veículos de impressa introduziram, a fim de dimensionar melhor os números, um dado estatístico não tão conhecido da população em geral: a média móvel.
Faça um programa que calcule uma média móvel. O programa deverá executar um faço de leitura de valores inteiros e positivos. A introdução de valores negativos servirá como indicador de término do programa. Para cada valor fornecido, deverá ser impressa a média calculada. A média móvel é calculada sobre um número especificado de pontos. Quando se introduz um novo dado, o valor mais antigo é descartado, e o novo valor introduzido é incorporado ao cálculo da média. Esse esquema de substituição faz da média móvel um instrumento valioso na análise de tendências. Considerar para a solução deste problema 5 pontos (valores) e iniciar o cálculo das médias ao completar a quinta leitura.

 

O que eu fiz:

 

#include <stdio.h>
int main(void) {
	int N, i=1, c = 0;
	double mediaMovel = 0.0;
	printf("Valor:\n");
	while(i<=5) {
		scanf("%d", &N);
		if (N<0)
		{
			break;
		}
		else
		{
			c++;
			mediaMovel = (mediaMovel + N)/c;
  			printf("Media Movel: %.1lf\n", mediaMovel);
		}
		i++;
	}
	return (0);
}

Estou fazendo a parte:

Citação

Para cada valor fornecido, deverá ser impressa a média calculada.

Corretamente??? E quanto ao resto?

Postado

Se estou certo, a Media Móvel é exibida apôs 5 pontos (valores lidos) e não antes disso. Então, é preciso guarda 5 valores, possivelmente em um vetor, para só então exibir a MM pela primeira vez.

 

Porque depois da primeira exibição, a cada nova entrada se substitui a entrada mais antiga salva no vetor pela nova.

 

No vetor, a entrada mais antiga muda de índice, por exemplo; começa no índice 0, e depois de uma entrada passa a ser o 1, e assim sucessivamente, até a chegar ao 4 para retornar ao 0. Essa é a ordem de substituição dos valores antigos por novos a cada entrada, depois de 5 entradas.

 

Nesse ciclo de leitura, substituição e média só tem fim quando uma entrada é negativa.

 

 

Postado

Ficou bem compreensivo o que você falou, obrigado.

Fiz o seguinte:

#include <stdio.h>
#define T 5
int main(void) {
	int vetor[T], i = 0;
	double mediaMovel[T], media = 0.0;
	printf("Valor:\n");
	while(i<5) {
		scanf("%d", &vetor[i]);
		if (vetor[i]<0)
		{
			break;
		}
		else
		{
			mediaMovel[i] += (double)vetor[i];
			media += mediaMovel[i];
		}
		i++;
		if (i==T-1)
		{
			printf("Media Movel: %.1lf\n", media/(T-1));
		}
	}
	return (0);
}

O que achas?

Na verdade, estava dando alguns erros, corrigi e ficou:

#include <stdio.h>
#define T 5
int main(void) {
	int vetor[T], i = 0;
	double mediaMovel[T], media = 0.0;
	printf("Valor:\n");
	while(i<5) {
		scanf("%d", &vetor[i]);
		if (vetor[i]<0)
		{
			break;
		}
		else
		{
			mediaMovel[i] += (double)vetor[i];
			media += mediaMovel[i];
		}
		i++;
		if (i==T)
		{
			printf("Media Movel: %.1lf\n", media/T);
		}
	}
	return (0);
}

 

Postado

Tem coisas que eu discordo. Media Móvel não é um vetor, periodo é o vetor com 5 pontos (valores). Eu entendo a média móvel sendo a soma dos 5 valores que compõe o período dividido por 5. Então primeiro vem adição dos pontos no período, que podemos identificar por

 

soma_do_periodo, depois há divisão por 5.0, cujo quociente devemos chamar de media_movell

media_movel= soma_do_periodo / 5.0;

 

Escreva sem miséria; faça um laço exclusivo ou estrutura que ler os 5 primeiros valores do período e outro para os valores seguintes.

  • Curtir 2

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!