我必须在C ++中列出人和他们的考试成绩。我的问题是我不知道如何输入数组。
我试图制作3D数组字符串,但它不起作用。 必须有功能!如果您有更好的建议,我将非常感激
我的意见必须是这样的:
彼得·埃文斯4.86
*其他人**
*组的平均结果**
*最高等级**的人
*最低等级**
这就是我现在所做的:
#include <iostream>
#define MAXN 200
#define MAXM 200
#define MAXX 200
using namespace std;
void input(char list[][MAXN][MAXM], int n) {
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
for (int p = 0; p < n; p++)
cin >> list[i][j][p];
}
}
int main() {
char list[31][MAXN][MAXM];
int n;
cin >> n;
input(list, n);
return 0;
}
答案 0 :(得分:1)
您不需要运行第三次迭代,因为您不必逐个字符地存储输入字符。第三维可用于存储整个字符串。
尝试以下方式。观察我在您的代码段中所做的更正。
#include <iostream>
#define MAXN 200
#define MAXM 200
#define MAXX 200
using namespace std;
void input(char list[][3][MAXM], int n) {
for (int i = 0; i < n; i++) //number of entries
for (int j = 0; j < 3; j++) { //3 fields - fname, lname and marks
cin >> list[i][j];
}
}
int main() {
char list[31][3][MAXM];
int n;
cin >> n;
input(list, n);
return 0;
}
答案 1 :(得分:1)
您必须使用struct的向量。
以这种方式定义结构:
typedef struct details{
string Fname;
string Lname;
float marks;
} details;
矢量应该看起来像
vector< details > info;
我只是告诉你如何在以下代码中实现它:
void insertValues(vector< details >& info){
int n;
details d;
cout<<"Enter the size of record: ";
cin>>n;
cout<<"Enter records: "<<endl;
for(int i=0;i<n;i++){
cin>>d.Fname>>d.Lname>>d.marks;
info.push_back(d);
}
}
void LowestScorer(vector< details > info){
details d;
vector< details >::iterator it=info.begin();
d=*it;
for(;it!=info.end();it++){
if(d.marks > it->marks){
d=*it;
}
}
cout<<"Lowest Scorer: "<<d.Fname<<" "<<d.Lname<<" "<<d.marks<<endl;
}
main应该是这样的:
int main(){
vector< details > info;
insertValues(info);
LowestScorer(info);
return 0;
}
答案 2 :(得分:0)
如上述评论所述,现在是学习vector
的好时机。这很容易。以下是一个非常简单明了的解决方案:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
typedef vector<pair<string, string> > Container;
int main()
{
Container container;
container.push_back(make_pair("Peter Evens", "4.86"));
container.push_back(make_pair("Other name", "his score"));
return 0;
}