我想在对话框构架里用定时器实现移动平均,但运行结果总是一个很大的正数或负数,我的数组也已经赋了初值,大侠们帮我看下程序代码错在哪!!
我在对话框里加了文本框和按钮!!
以下是源代码!!

解决方案 »

  1.   

    int i,j,k;
    int a[5]={0,0,0,0,0};
    .....void CMv1Dlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    // k=1;
    SetTimer(1,1000,NULL);
    }
    void CMv1Dlg::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    CString s1;
        int a1;
    CDialog::OnTimer(nIDEvent);
        avg(); k=k+1;
        a[j]=k;
        j=(j+1)%5; s1.Format("%f",avg());

    GetDlgItem(IDC_EDIT1)->SetWindowText(s1);
    }
    double CMv1Dlg::avg()
    {
        float v,avg; for(i=0;i<5;i++)
    {
    v=v+a[i];
    }
    avg=v/5;
        return avg;
    }
      

  2.   

    double CMv1Dlg::avg() 

        float v = 0.0f ,avg; for(i=0;i <5;i++) 

    v=v+a[i]; 

    avg=v/5; 
        return avg; 
    }