Hello, OnlineGDB Q&A section lets you put your programming query to fellow community users. Asking a solution for whole assignment is strictly not allowed. You may ask for help where you are stuck. Try to add as much information as possible so that fellow users can know about your problem statement easily.

Não consigo calcular a média móvel e nem a tendencia. Principiante

+3 votes
asked Dec 11, 2022 by Jessica Jessy (150 points)
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

float A;
float n;
float media;
float MM3[3];
float MM5[5];

   void calcMediaMovel( float* media, float* n)
 {
     for (float A = 0; A > 0; A++){
     
     }
     

  return media;
 }
int main()
{
     

    int A [100];
    int B;
    int b;
    int soma = 0;
    int media = 0;
   
    
    cout << "Insira a media movel 1" << endl;
    cin >>  B;
  
    cout << "Insira a media movel 2" << endl;
    cin >> b;
    
    cout << "Insira os dados da serie" << endl;
    for ( int i = 0; i < B; i++){
      cin >>  A[i];
    }
    
    
    
    for ( int i = 0; i < B; i++){
        soma = soma + A[i];
         media = soma / B;
   
    }
    cout << " media :" << media << endl;
  
  
  
       
   
    return 0;
}

1 Answer

0 votes
answered Feb 16, 2023 by Douglas Pinto do Nascimento (270 points)
A função calcMediaMovel não é usada na função principal e não parece servir a nenhum propósito.

As variáveis float MM3[3] e float MM5[5] não são usadas no código e podem ser removidas.

O loop em calcMediaMovel tem uma condição de saída A > 0, o que significa que ele nunca será executado, pois A é inicializado em 0 e incrementado em 1 no loop. Este loop deve ser removido.

Os valores de entrada para as médias móveis (B e b) não são usados no código. Eles devem ser usados para calcular a média móvel.

O cálculo da média móvel está incorreto. O loop que calcula a soma dos dados deve começar no índice i - B + 1 para garantir que a janela móvel esteja centralizada em torno do ponto de dados atual. Da mesma forma, o loop que calcula a média móvel deve começar do índice B - 1.

Acho que vc queria fazer isso!

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
    const int MAX_SIZE = 100;
    int A[MAX_SIZE];
    int B, b;
    int n;
    float soma = 0.0;
    
    cout << "Insira o tamanho da janela da media movel 1: ";
    cin >> B;
  
    cout << "Insira o tamanho da janela da media movel 2: ";
    cin >> b;
    
    cout << "Insira o numero de dados da serie: ";
    cin >> n;
    
    cout << "Insira os dados da serie: ";
    for (int i = 0; i < n; i++){
      cin >> A[i];
    }
    
    cout << fixed << setprecision(2);
    
    cout << "Media movel " << B << ": ";
    for (int i = B - 1; i < n; i++){
        if (i >= B) soma -= A[i - B];
        soma += A[i];
        cout << soma / B << " ";
    }
    cout << endl;
    
    cout << "Media movel " << b << ": ";
    soma = 0.0;
    for (int i = b - 1; i < n; i++){
        if (i >= b) soma -= A[i - b];
        soma += A[i];
        cout << soma / b << " ";
    }
    cout << endl;
   
    return 0;
}
Welcome to OnlineGDB Q&A, where you can ask questions related to programming and OnlineGDB IDE and receive answers from other members of the community.
...