注册 登录
编程论坛 C++教室

求平均数

zzt_428 发布于 2008-12-02 16:06, 800 次点击
小弟写了个求平均数的程序,让录入10个成绩,但是可以提前结束录入,然后算平均数,打印到屏幕.但是求平均数的结果是错误的,请哪位指点一下,谢谢!
#include <iostream>
using namespace std;
const int Lim=10;

void  Input(double arr[Lim]);
void Average(double array[]);
void Show(double array[]);

int main()
{

    double arrDou[Lim];
    
    Input(arrDou);
    Show(arrDou);
         Average(arrDou);

    return 0;
}

void Input(double arr[Lim])
{
    
    int flag;
    double temp;
    for(int i=0; i<Lim; i++)
    {
        cout << "Enter the scores#" << (i+1) << ":";
        cin >>temp;
        if(!cin)
        {
            cin.clear();
            while(cin.get() != '\n')
                continue;
            cout << "Bad input;Input process terminated.\n";
            break;

        }
        else if(temp < 0)
            break;
        arr[i]=temp;
    }

    for(;i<Lim; i++)
           arr[i]=0;


}

void Average(double array[])
{
    unsigned long  aver, sum;
    int i;
    for(i=0; i<Lim; i++)
    {
        sum+=array[i];
        aver=sum/Lim;
        
    }
    cout << "Average: " << aver << endl;

}

void Show(double array[])
{
    int i;
    for(i=0; i<Lim; i++)
        cout << (i+1) << ":" << array[i] << "\n";
    
}
2 回复
#2
h130773959592008-12-02 16:28
1.  在 average函数中,sum=0.0初始化;      aver=sum/Lim;位于for 循环外面
2.  函数调用数组,是不是要把数组维数做为另一个参数调入.
#3
hejingyang06262008-12-02 17:07
你编写的思路是对的 主要是细节有点问题
以下是我给你改的

#include <iostream>
using namespace std;
const int Lim=10;

void  Input(double arr[Lim]);
void Average(double array[]);
void Show(double array[]);

int main()
{

    double arrDou[Lim];
   
    Input(arrDou);
    Show(arrDou);
    Average(arrDou);

    return 0;
}

void Input(double arr[Lim])
{
   
    int flag;
    double temp;
    for(int i=0; i<Lim; i++)
    {
        cout << "Enter the scores#" << (i+1) << ":";
        cin >>temp;
        if(!cin)
        {
            cin.clear();
            while(cin.get() != '\n')
                continue;
            cout << "Bad input;Input process terminated.\n";
            break;

        }
        else if(temp < 0)
            break;
        arr[i]=temp;
    }

    for(;i<Lim; i++)
           arr[i]=0;


}

void Average(double array[])
{
    unsigned long  aver,sum=0.0;
    int i;
    for(i=0; i<Lim; i++)
    {
        sum+=array[i];
        
        
    }aver=sum/Lim;
    cout << "Average: " << aver << endl;

}

void Show(double array[])
{
    int i;
    for(i=0; i<Lim; i++)
    cout << (i+1) << ":" << array[i] << "\n";
   
}
1