Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Média móvel em C

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C# Média móvel em C

    Então, eu não entendo muita coisa de C e meu professor pediu pra fazer um programa em C pra conseguir representar o cálculo da média móvel simples, só que eu to quebrando a cabeça e não estou conseguindo.
    Eu preciso armazenar os valores em um vetor de 1000 posições, ler valores positivos e deve parar quando for imformado um valor negativo, até aqui tudo bem, OU quando chegar ao limite do vetor.

    Agora essa parte está complicando e realmente eu não estou conseguindo, se alguém poder ajudar e me indicar um caminho...

    *Em seguida deve ler o número de períodos que serão considerados no cálculo. Observe que o número de períodos deve ser compatível com o tamanho do vetor. Cuidado com os limites (extremidades) do vetor.

    *Calcular e escrever o novo vetor, lembrando que a cada novo cálculo, o valor que ocupava a posição antiga é descartado.


    Bom, andei pesquisando sobre a média móvel e pelo que eu entendi e, meio por cima do que o professor falou é, no vetor de 1000 posições o usuario vai informar o numero de periodos para fazer o cálculo, ex: se ele informar 3, o calculo deve pegar a posição 3 do vetor e uma posição anterior e uma posterior (posição 2 e 4 do vetor) e fazer a média... caso informe 5, deve pegar duas posição anteriores e duas posteriores alem da posição 5 (pegar posição 3,4 e 6,7) e assim por diante... Foi o que eu entendi, se alguém poder dar uma ajuda eu agradeceria muito. E se eu estiver errado sobre a média móvel, me corrijam.

    Obrigado.

  • Font Size
    #2
    Bergnost,

    pense assim: o seu programa tem dois caminhos.

    1) o vetor será completamente preenchido, ou
    2) o vetor será preenchido até que um valor negativo seja informado (podendo ser na 2a, 11a, 654a, 997a posição, qualquer que seja).

    Em ambos os casos, você tem um limite de valores que é 1000, mas não sabe quando vai parar, então você declara um vetor float v[1000], e um contador i = 0. Faz um while (i < 1000) para poder ler o número com scanf("%f", &v[i]), testa a condição pra ver se o número informado não é negativo e não esqueça de incrementar o contador (i++. Se um número negativo nunca for digitado, quer dizer que preencheu o vetor inteiro, e o contador estará em 1000 quando terminar (porque o vetor vai de 0 a 999)

    Para a segunda parte do programa que é a média móvel (É a média mais comum, a média aritmética de n períodos. É calculada somando-se os valores dos n períodos e dividindo o resultado por n. Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...) voce determina o número de períodos em uma variavel, por exemplo int periodos = 0; através do scanf("%d", &periodos) dela, e aí utiliza o mesmo i que você usou lá em cima num for:

    Código:
    float media = 0;
    for(i = 0; i < periodos; i++) {
        media += v[i];
    }
    media /= periodos;
    veja se isso ajudou e qualquer coisa volte a postar
    Assembly, C, C++, C#, HTML/XHTML, Java SE, Java EE, JavaScript, Perl, Python, SQL.

    "If you give a hacker a new toy, the first thing he'll do is take it apart to figure out how it works." - Jamie Zawinski

    Comment

    X
    Working...
    X