首先,我是C ++的新手,主要使用Java,JavaScript,C#和Scala等语言。
我正在尝试编写一个程序,它将从控制台获取一个数字,这将确定团队的数量(以链接列表的形式(例如,numTeams = 5;表示5个链接列表))然后将采取在输入之后,第一个值将被添加到第一个链接列表,然后第二个值将添加到第二个链接列表,依此类推,直到所有i值分配给所有n个团队。此外,当所有链接列表都填充了相同数量的值时,它将在第一个链接列表中再次开始,并再次通过它们将值添加到每个列表。
我知道我必须制作一系列链接列表,但我不确定如何进一步发展我所说的以我所说的方式分配价值。
非常感谢任何帮助!
这是我到目前为止所做的:
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
using namespace std;
class balanceTeams{
// Struct inside the class LinkedList
struct Node {
int x;
Node *next;
};
public:
// constructor
balanceTeams(){
head = NULL; // set head to NULL
}
// New value at the beginning of the list
void addUnit(int val){
Node *n = new Node(); // create new Node
n->x = val; // set value
n->next = head; // make the node point to the next node.
// If the list is empty, this is NULL
head = n; // head point at the new node.
}
// returns the first element in the list and deletes the Node.
int popUnit(){
Node *n = head;
int ret = n->x;
head = head->next;
delete n;
return ret;
}
//void swapUnit()
//void moveUnit()
private:
Node *head; // pointer to the first Node
};
int main() {
string line;
int numTeams = 0;
int lines = 0;
vector<balanceTeams> vect;
//int team_size = lines / numTeams;
getline(cin, line);
numTeams = atoi (line.c_str());
vect.resize(numTeams);
cout << "Num teams: " << numTeams << endl;
while (getline(cin, line)) {
cout << "Unit " << line << endl;
}
return 0;
}
编辑:三个错误:
balanceTeams.cpp: In function ‘int main()’:
balanceTeams.cpp:72:23: error: no matching function for call to
‘balanceTeams::addUnit(std::string&)’
vect[i].addUnit(line);
^
balanceTeams.cpp:72:23: note: candidate is:
balanceTeams.cpp:25:7: note: void balanceTeams::addUnit(int)
void addUnit(int val){
^
balanceTeams.cpp:25:7: note: no known conversion for argument 1 from ‘std::string {aka std::basic_string<char>}’ to ‘int’
答案 0 :(得分:0)
您的代码中似乎缺少的是:
1)一些错误检查。输入的团队数量必须至少为一个。如果有人输入0或负值,则显示错误消息并挽救。
2)初始化
size_t i=0;
在现有循环之前。
3)在循环内部,解析现有值,然后调用
vect[i].addUnit(new_value);
4)在循环结束时递增索引,为下一个迭代器
i=(i+1) % vect.size();
似乎就是这样。每次循环时,您都要为下一个向量添加一个值。