如何改进以下代码的输出:#include <iostream> #include <string> using namespace std; class Exam{ public: string num; int disease[100]; int count; Exam(){}; friend void print(Exam*e, int count, int *d); }e[3000]; void print(Exam*e, int count, int *d){ int i=0,j=0,k=0; for(i=0;i<e->count;i++){ while(e->disease[j]!=0){ while(d[k]!=0){ if(e->disease[j]==d[k]){ cout<<e->num<<' '<<d[k]<<endl; break; } k++; } j++; k=0; } j=0; } } int main (){ int i=0,j=0,m=0; while(1){ cin>>e[i].num; if(e[i].num=="0"){ break; } cin>>e[i].count; for(j=0;j<e[i].count;j++){ cin>>e[i].disease[j]; } i++; } int notice[100]; j=0; while(1){ cin>>notice[j]; if(notice[j]==0){ break; } j++; } m=i; for(i=0;i<m;i++){ print(&e[i],e[i].count,notice); } }
时间: 2023-07-15 18:13:42 浏览: 81
#include <iostream> #include<iomanip> using namespace std;九九乘法表
可以考虑使用更加简洁的语法来实现同样的功能,同时增加一些错误处理以及更好的输出格式,以下是改进后的代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Exam {
public:
string num;
vector<int> diseases;
Exam() {};
};
void print(Exam e, vector<int> notices) {
for (int i = 0; i < e.diseases.size(); i++) {
if (find(notices.begin(), notices.end(), e.diseases[i]) != notices.end()) {
cout << e.num << " " << e.diseases[i] << endl;
}
}
}
int main() {
vector<Exam> exams;
while (true) {
Exam e;
cin >> e.num;
if (e.num == "0") {
break;
}
int count;
cin >> count;
for (int i = 0; i < count; i++) {
int disease;
cin >> disease;
e.diseases.push_back(disease);
}
exams.push_back(e);
}
vector<int> notices;
while (true) {
int notice;
cin >> notice;
if (notice == 0) {
break;
}
notices.push_back(notice);
}
for (int i = 0; i < exams.size(); i++) {
print(exams[i], notices);
}
return 0;
}
改进后的代码使用了 STL 中的 vector 容器来存储病例和通知,简化了代码逻辑。同时,使用了一些 C++11 的语法,如 auto 关键字和范围 for 循环,使得代码更加简洁。输出格式也做了一些改进,更易读。
阅读全文