Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Vetores


rtfarias

Pergunta

Olá pessoal estou com uma dúvida nesse código, que é para fazer uma média móvel, ou seja o programa deve ir lendo valores e armazenando numa variável, e ir somando essas variáveis e quando chegar a 3 deve se dividir por 3.

Isso é fácil o problema é depois do 3° numero o programa tem que continuar somando a média mas sempre dos ultimos tres numeros

Ex:

n1= 2

n2 =2

n3 =2

media = n1+n2+n3 / 3 = resultado: 2

n4=3

media = n2+n3+n4 / 3 = resultado: 2,6

n5=7

media = n3+n4+n5 / 3 = resultado: 4

E assim por diante, claro que não vou criar uma variável para cada numero e sim um vetor n, para ler os numeros, mas já tentei quebrar a cabeça e não consigo fazer funcionar essa parte de somar só os três últimos números lidos, é bem mais difícil do que parece

Vejam o que eu tentei:

#include<stdio.h>
#include<stdlib.h>
main(){
int m1, m2, m3, m4;
int media_movel, soma, n[10], i;
float media;
for (i=0; i<10; i++){
[/b]   scanf("%d", &n[i]);

if (i<2){
media=n[i];
printf("%.1f\n", media);
}

if (i==2){
soma= n[0]+n[1]+n[2];          
media=(n[0]+n[1]+n[2])/3;
printf("%.1f\n", media);          
}

if (i>2){
media=soma+n[i];
printf("%.1f\n", media);         
media_movel=media-(n[i]-n[i-3])/3;
printf("%.1f\n", n[i]-3);
printf("%d\n", media_movel);         
}       
}getch();
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Velho, não sei se entendi direito o que você está querendo, mas se for o que eu to pensando tenta fazer assim:

Cria uma variável "int j" e coloca um laço "for" depois do printf("%.1f\n", media);

if (i>2){

media=soma+n;

printf("%.1f\n", media);

/*Você quer deixar os valore n+n[i-1]+n[i-2], ou seja, os três últimos. Então você tem que tirar os valores anteriores...

Se você não quiser alterar o valor de "média", é só atribuir o valor dela à outra variável*/

for(j=0; j<(i-2); j++)

media_movel=media-n[j];

media_movel=media/3;

/*Não entendi o porque de você imprimir o valor de n-3. */

printf("%.1f\n", n-3);

printf("%d\n", media_movel);

}

}getch();

}

Obs.: Não testei o código, mas isso deve funcionar.

Obs.: Dúvida pessoal. Como eu faço pra inserir o código em uma caixa (CODEBOX) como você fez? Toda vez que eu tento usar a opção inserir item especial -> CODEBOX, recebo a mensagem de "request URL was not found on this server (404)".

Editado por dark_max
Link para o comentário
Compartilhar em outros sites

  • 0

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
  
  int i, j;
  float media[8], n[10];
  
  for (i=0; i<10; i++){
      printf("Digite o valor: ");
      scanf("%f", &n[i]);
  }

  for ( j = 0; j<8; j++){
      media[j] = (n[j]+n[j+1]+n[j+2])/3;
      printf("A %d media = %.2f\n", j, media[j]);
      }

    system("PAUSE");    
    return 0;
}

Para inserir com TAG CODEBOX utilize o ultimo icone (Localizado abaixo da FONTE) INSERIR CODE

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...