C++中的有关文件的一道题目,求答案!

【描述】需要计算一些学生的加权平均分。给定输入文件gpa.dat,文件中每个学生的信息都由两行内容组成。第一行是学生姓名,第二行是他几门课的成绩。下面是某个输入文件gpa... 【描述】

需要计算一些学生的加权平均分。给定输入文件gpa.dat,文件中每个学生的信息都由两行内容组成。第一行是学生姓名,第二行是他几门课的成绩。下面是某个输入文件gpa.dat的内容:

Zhang
San

3 2.8 4
3.9 3 3.1

Li
Si

3 3.9 3
4.0 4 3.9

Wang
Wu

2 4.0 3
3.6 4 3.8 1 2.8

Liu
Liu

3 3.0 4
2.9 3 3.2 2 2.5

例如,张三(Zhang San)同学:第一门课,学分3,成绩3.8;第二门课,学分4,成绩3.9;第三门课,学分3,成绩3.1。

总平均分等于学分乘以成绩,加权平均分等于总平均分除以总学分数。加权平均分最低0.0,最高4.0。

【输入】

文件gpa.dat。(该文件已经存在,无需自己创建)

注意:本地调试程序时,则要求自己预先建立好gpa.dat文件。在Windows下,可以使用记事本。

【输出】

在屏幕上显示每个学生的加权平均分以及加权平均分的最大和最小值。

【输入示例】

文件gpa.dat,注意:这里只给出了其中部分内容。

Zhang
San

3 2.8 4
3.9 3 3.1

Li
Si

3 3.9 3
4.0 4 3.9

Wang
Wu

2 4.0 3
3.6 4 3.8 1 2.8

Liu
Liu

3 3.0 4
2.9 3 3.2 2 2.5

【输出示例】

GPA for
Zhang San = 3.33

GPA for
Li Si = 3.93

GPA for
Wang Wu = 3.68

GPA for
Liu Liu = 2.93

max GPA
= 3.93

min GPA
= 2.93
展开
 我来答
C_Code_Master
2015-05-23 · TA获得超过447个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:179万
展开全部
#include <iostream>
#define MAX 80+5

using namespace std;

int m,n;

long long return_pow_2(int i)
{
    long long sum=1;
    for(int j=1; j<=i; j++)
    {
        sum*=2;
    }
    return sum;
}

int main()
{
    int number[MAX][MAX];
    cin>>n>>m;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            cin>>number[i][j];
        }
    }
    long long sum=0;
    long long sum_lone;
    for(int i=0; i<m; i++)
    {
        int max_num=number[i][0];
        for(int j=0; j<n; j++)
        {
            if(number[j][i]>max_num)
            {
                max_num=number[j][i];
            }
        }
//        cout<<max_num<<"\t";
        sum_lone=max_num*return_pow_2(i+1);
        sum+=sum_lone;
    }
    cout<<sum;
    return 0;
}
追问
不懂啊,要从文件中写出显示在屏幕上
爱问小圣
2015-05-23 · TA获得超过363个赞
知道小有建树答主
回答量:481
采纳率:40%
帮助的人:128万
展开全部
用freopen("gpa.dat",stdin)就可以解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式