该程序将读取一个包含学生5分的数据文件 计算机科学(CS)测试。每个学生记录将首先包含他/她的姓氏 姓名,数字学生ID,学生用户名,5个考试成绩,这5个成绩的平均分, 和CS课程的成绩。该文件将由程序处理并生成一个 报告。
你必须 通过myClasses @ SU提交您的C ++源代码,即.cpp文件 在:
Algorithm design/Pseudocode 10
Correct outputs 20
Structures 20
Functions 10
File reading 10
Input checking 10
Searching and sorting 10
Readability/comments of program (including project report) 10
3
Sample Run
Bonebrake Nicole 1111 90 85 50 78 85
Boyer Dennie 2222 100 90 99 89 88
Bozick Julia 3333 52 85 44 66 87
Carroll Sandra 4444 87 88 95 85 100
Creighton Sarah 5555 91 55 80 88 75
Everett Terry 6666 60 70 59 79 89
Freeman Andrew 7777 92 95 94 96 97
Fugett Brandon 8888 77 88 75 95 80
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct StudentData
{
string first;
string last;
int studentID;
int exam1;
int exam2;
int exam3;
int exam4;
int exam5;
};
int main()
{
ifstream file;
file.open("grade.dat");
StudentData students[8][8];
file.close();
}
我无法将数据从文件中取出并将其放入数组中。
答案 0 :(得分:0)
以下内容如何:
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <cstdio>
using namespace std;
struct StudentData
{
string first;
string last;
int studentID;
int exam1;
int exam2;
int exam3;
int exam4;
int exam5;
};
int main()
{
ifstream file;
string temp;
char fname[100];
char lname[100];
file.open("grade.dat");
StudentData students[8];
for (int i = 0; i<8; i++)
{
getline(file, temp);
sscanf(temp.c_str(),"%s %s %d %d %d %d %d %d", fname,lname,&students[i].studentID
,&students[i].exam1,&students[i].exam2,
&students[i].exam3,&students[i].exam4,&students[i].exam5);
students[i].first = fname;
students[i].last =lname;
}
file.close();
for (int i = 0; i<8; i++)
{
cout<<students[i].first<<" "<<students[i].last<<" "<<students[i].studentID
<<" "<< students[i].exam1<<" "<< students[i].exam2<<" "<< students[i].exam3
<<" "<< students[i].exam4<<" "<< students[i].exam5<<endl;
}
}
答案 1 :(得分:0)
好的,既然你需要的只是一个良好的开端,这里有一些提示:
首先,你的任务没有说明2d阵列,如果你是为了额外的功劳或其他事情而做的 - 不要这样做,既不是你的任务,也不是当前的实际任务。< / p>
第二 - 你手头的问题 - 阅读文件。您应该从一次读取一行开始。该行包含姓名,ID和成绩。获得该行后,您可以通过在空格键处拆分字符串来提取字段。这将为每个字段提供一个字符串。然后,您可以将学生姓名字段分配给字符串。还有一个函数可以将字符串转换为整数 - 这对于其他字段来说非常方便。
为了让事情看起来更专业,你可能想要考虑使用容器类而不是普通数组,std::vector
是一个很好的候选者。此外,如果要进行排序,可能需要使用指针(最好是智能指针)和动态内存分配。此外,为了能够对数组进行排序,您需要编写基于不同标准比较学生的函数。容器将为您提供一种简单的方法来添加和删除学生,而不是一些僵硬的静态构造。
这里的每一步都已经在SO的答案中涵盖了,所以你需要做的就是在遇到问题时进行搜索。