3

我已经做这个作业好几天了,我无法弄清楚我到底做错了什么。

简而言之,我正在用 C++ 构建一个简单的基本程序,它从一个名为 input.dat 的文件中读取一个学生姓名和 5 个成绩,然后写入该数据,并将其组织到一个名为 output.dat 的单独文件中。

很简单,对吧?但是,当我检查输出文件时,我发现的不是简单的整数,而是疯狂的、指数级的大数字,它们会重复自己。

请帮帮我。对我放轻松。我今年 18 岁,这是我的第一堂编程课。

这是我的代码:

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;

int main()
{
    ifstream in_stream;
    ofstream out_stream;
    in_stream.open("input.dat");
    out_stream.open("output.dat");

    double test1, test2, test3, test4, test5;
    string name1, name2;

    cout.precision(2);
    cout.setf(ios::showpoint);

    in_stream >> name1 >> name2 >> test1 >> test2 >> test3 >> test4 >> test5;

    out_stream << "Student Name: " << name1 << name2 <<endl
        << "Test Scores: " << test1 << test2 << test3 << test4 << test5 <<endl
        << "Average Test Score: " << ((test1 + test2 + test3 + test4 + test5)/5);

    in_stream.close( );
    out_stream.close( );

    system("pause");
    return 0;
}
4

1 回答 1

0

所以总结评论,解决方案应该是这样的:

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;

int main()
{
    ifstream in_stream;
    ofstream out_stream;
    in_stream.open("input.dat");
    out_stream.open("output.dat");

    double test1, test2, test3, test4, test5;
    string name1, name2;

    cout.precision(2);
    cout.setf(ios::showpoint);

    if(in_stream >> name1 >> name2 >> test1 >> test2 >> test3 >> test4 >> test5)
    {
        out_stream << "Student Name: " << name1 << name2 <<endl
            << "Test Scores: " << test1 << " " << test2 << " " << test3 << " " << test4 << " " << test5 << endl
            << "Average Test Score: " << ((test1 + test2 + test3 + test4 + test5)/5);
    }
    else
    {
        out_stream << "Failed to red input file" << endl;
    }

    in_stream.close( );
    out_stream.close( );

    system("pause");
    return 0;
}
于 2012-11-06T21:44:44.617 回答