我正在使用这些值:
8
9 5 7 -5 13 -4 11
7 5 -3 12 -5 17 -3
25 7 12 -3 5 -5 7 -5 3
14 5 12 -3 10 -7 8
5 1 -40
33 5 15 -5 9 -3 8
11 5 -12 8 -5 12 -3
13 5 3 -4 25 -5 3
第一个数字是球队中的篮球运动员数量,每一行的第一个数字是球员的球员号码,第二个数字是他在比赛期间坐在板凳上或在场上比赛的次数,其他数字是他打的时间(如果数字是正数)以及他坐在板凳上多久(如果数字是负数)。我需要做的是弄清楚哪5名球员开始比赛(如果连续的第3个数字是正数,则表示玩家开始了比赛)。然后我需要拿出开始比赛的球员的套件编号并从最低到最高排序。这是我的进步:
void skaitymas()
{
int minnum = starters[0];
ifstream fd ("u1.txt");
fd >> n;
for (int i = 0; i < n; i++){
fd >> k[i] >> t;
for (int j = 0; j < t; j++){
fd >> zaidnez[j];
}
if (zaidnez[0]>0){
// if I write cout << k[i]; here I get all the kit numbers but not in order
starters[i] = k[i]; // here I'm trying to set the values to another array but it doesn't really work, I'm not sure how to do it properly.
}
}
fd.close();
}
答案 0 :(得分:0)
根据评论中的建议使用vector
解决此问题。
请注意,我使用cin
是为了方便起见,但您可以使用ifstream fd
#include <iostream>
#include <vector>
#include <sstream>
#include <limits>
using namespace std;
int main() {
int n;
cin >> n;
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
vector <vector <int> > players;
for(int i=0; i<n; i++ )
{
vector <int> player;
int val;
std::string line;
std::getline(cin, line);
std::istringstream iss(line);
while ( iss >> val) {
player.push_back(val);
}
players.push_back(player);
if((player.size()>3)&&(player[2]>0))
cout << player[0] << " ";
}
cout << endl;
return 0;
}
所以在players
中你有vector
包含所有玩家(也是vector
s)。然后,您可以使用std::sort
对其进行排序。
输出:
9 25 14 33 13