我有一个程序,它接收COSID在100到200之间的学生的数据文件以及他们注册的课程。它看起来像是:100
Greg
Samson
3
COS301
COS431
COS490
120
Jo Ann
Lyons
0
。我有一个动态数组,包含学生正在学习的所有课程。我遇到的问题是,当使用这个原型输入课程ID时,我被要求在特定课程中打印其他人:void printList (ostream& out, FlexArray<Student> majors, int cosID, string course);
我不确定如何创建函数来搜索此类型的数组。我试图使用数组,因此所有的COSID都是-1所以当我尝试搜索时,我应该更容易找到有信息的元素,但也无法完成。这是我到目前为止的代码T:
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include "templates.h"
using namespace std;
struct Student {
int COSID;
string fname;
string lname;
int totCourses;
string * coursearr;
};
void printList (ostream& out, FlexArray<Student> majors, int cosID, string course);
int main(){
Student s; // Object for struct student
int searchCOSID; //varible to find COS id
int Loopcheck = -1; //break loop variable
string LoopCOSID = ""; //break loop variable
FlexArray<Student> fa(100,200); //object for flex array setting Upper bounds to 200 and lower bounds to 100
//Initilize the flexarray cosid to -1;
for(int i=100; i<=200; i++){
fa[s.COSID = -1];
}
cout << fa[105].COSID;
char c;
ifstream fin; // declare input file stream object
fin.open ("a5.txt");
fin >> s.COSID;
fin.get(c);
getline(fin, s.fname);
getline(fin, s.lname);
fin >> s.totCourses;
while(!fin.fail()){
s.coursearr = new string[s.totCourses];
if(s.totCourses > 0){
for(int i=0; i<s.totCourses; i++){
fin >> s.coursearr[i];
}
}
fa[s.COSID] = s;
fin >> s.COSID;
fin.get(c);
getline(fin, s.fname);
getline(fin, s.lname);
fin >> s.totCourses;
}
cout << "\nEnter your COS ID: ";
cin >> searchCOSID;
Student currstudent = fa[searchCOSID];
if(currstudent.COSID=-1){
cout << "ID not asscoaited with a student";
}else{
cout << "The courses taken this semester by " << currstudent.fname << " " << currstudent.lname << " include:";
if(currstudent.totCourses > 0){
for(int i=0; i<currstudent.totCourses;i++){
cout << "\n" << currstudent.coursearr[i];
}
}
else{cout << endl <<"No courses";}
}
while(Loopcheck == -1){
cout << "\n\nEnter a couses (Q) to quit: ";
cin >> LoopCOSID;
if(LoopCOSID == "Q" || LoopCOSID=="q"){
Loopcheck = 0;
}else{
string course;
cout << endl << "Other students taking this course include: ";
//printList(cout,FlexArray<Student>,searchCOSID,coursearr);
}
}
return 0;
}
void printList (ostream& out, FlexArray<Student> majors, int cosID, string course){
for (int i = 0; i<101; i++){
}
}
答案 0 :(得分:2)
For each student s in majors (silly name for a list of students isn't it?)
if s.COSID is not cosID
for each class c that s is taking
if c equals course
display s.fname
我想。这很难说。 print other people in a paticular class when a course ID is inputed using this prototype: void printList (ostream& out, FlexArray<Student> majors, int cosID, string course);
这是否意味着打印所有正在course
的学生,除了COSID
是cosID
参数的人?