带有字符串数组的C ++列表

时间:2017-06-05 15:41:20

标签: c++ arrays string list

我必须在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;
}

3 个答案:

答案 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;
}