Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在c++; P> >好的,所以我有一个问题,我怀疑是一个实际的C++特性,但是它值得一试…我正在创建一个基于终端文本的mancala游戏,我正在使用一个数组来跟踪棋盘上每个纸杯中的点数,我想知道如果用户触发,比如说,“boardArray[13]”纸杯,并且数组的流动是按时间顺序进行的,我想知道 “boardArray[13]”循环回板的开头,并开始分发回“boardArray[1]”。我怀疑这是否有道理,如果你需要我澄清,请告诉我。我基本上想要一个 1,2,3,4,5,6,7,8,9,10,11,12,13,14, RESET 1,2,3,4,5,6,7,8,9,10,11,12,13,14, RESET 1,2,3... 你不需要一个“循环数组”,这样的东西在C++中不存在。_C++_Arrays_Loops - Fatal编程技术网

有没有办法在c++; P> >好的,所以我有一个问题,我怀疑是一个实际的C++特性,但是它值得一试…我正在创建一个基于终端文本的mancala游戏,我正在使用一个数组来跟踪棋盘上每个纸杯中的点数,我想知道如果用户触发,比如说,“boardArray[13]”纸杯,并且数组的流动是按时间顺序进行的,我想知道 “boardArray[13]”循环回板的开头,并开始分发回“boardArray[1]”。我怀疑这是否有道理,如果你需要我澄清,请告诉我。我基本上想要一个 1,2,3,4,5,6,7,8,9,10,11,12,13,14, RESET 1,2,3,4,5,6,7,8,9,10,11,12,13,14, RESET 1,2,3... 你不需要一个“循环数组”,这样的东西在C++中不存在。

有没有办法在c++; P> >好的,所以我有一个问题,我怀疑是一个实际的C++特性,但是它值得一试…我正在创建一个基于终端文本的mancala游戏,我正在使用一个数组来跟踪棋盘上每个纸杯中的点数,我想知道如果用户触发,比如说,“boardArray[13]”纸杯,并且数组的流动是按时间顺序进行的,我想知道 “boardArray[13]”循环回板的开头,并开始分发回“boardArray[1]”。我怀疑这是否有道理,如果你需要我澄清,请告诉我。我基本上想要一个 1,2,3,4,5,6,7,8,9,10,11,12,13,14, RESET 1,2,3,4,5,6,7,8,9,10,11,12,13,14, RESET 1,2,3... 你不需要一个“循环数组”,这样的东西在C++中不存在。,c++,arrays,loops,C++,Arrays,Loops,通过循环索引,可以很容易地达到相同的效果 不要使用yourArray[i]只需使用yourArray[i%14]来访问它的前14个元素。内置数组类型不会这样做。如果您愿意,创建一个带有重载运算符的类型来完成这项工作是非常容易的 template <std::size_t N> class LoopedArray { int data[N]; public: int &operator[](size_t index) { return data

通过循环索引,可以很容易地达到相同的效果


不要使用
yourArray[i]
只需使用
yourArray[i%14]
来访问它的前14个元素。

内置数组类型不会这样做。如果您愿意,创建一个带有重载运算符的类型来完成这项工作是非常容易的

template <std::size_t N>
class LoopedArray {
    int data[N];
public:
    int &operator[](size_t index) { 
        return data[index % N];
    }
};

int main() {
    LoopedArray<13> la;

    // put known values into the array:
    for (int i=0; i<13; i++)
        la[i] = i;

    // demonstrate reading the data with "looping" of the index:
    for (int i=0; i<100; i++)
        std::cout << la[i] << "\t";
}
模板
类循环数组{
int数据[N];
公众:
int&运算符[](大小索引){
返回数据[索引%N];
}
};
int main(){
洛佩达拉;
//将已知值放入数组:

对于(int i=0;i)这样的数组在C++中不存在,我知道(或者所有的编程都是这样的)。 您可以尝试使用链接列表:

class node {
public:
    node* next;
    int value;

}
然后,将几个链接在一起:

node root;
node* current=&root
for(i=0;i<14;i++) {
    current->value=0; // for initialization
    current->next = new node;
    current = current->next;
}
current->next = root;
这只是一个例子,但很快就会有很多问题

我想我真的应该推荐与之类似的功能,但为您提供了一个很好的功能:

void addPoints(int arr[], int cup, int arrlen) {
    int value = arr[cup]; // stored for later    
    arr[cup] = 0; // since we are emptying the cup

    for(int i=0; i<value;i++) {
        arr[(cup+i)%arrlen] += 1;
    }

}

void addPoints(int-arr[],int-cup,int-arrlen){
int value=arr[cup];//存储以备以后使用
arr[cup]=0;//因为我们正在清空杯子

对于(int i=0;我不是100%确定你在问什么,但我想对用于索引数组的变量使用模运算符可能是你想要的。“如果需要我澄清,请告诉我”是的,澄清一下会有帮助。也许你可以用代码演示一下你需要什么?也许你只是想在第二个循环中加入一个基于范围的for循环。我假设在某个点/条件满足时,你会想要停止循环…你想要一个保持循环的数组?搜索词:“循环缓冲区”。根据它的运行时间、迭代速度以及索引变量的大小,如果(++i>=14,则有时最好使用
i=0;
以防止索引溢出。非常感谢,这正是我想知道的!@user4581301我对mancala游戏不太熟悉,但据我所知,用户会从14个杯子中选择一个,然后你会循环重新分发这些杯子。因此,将达到的最高索引将是14个+numberOfPieces,对于所有popolar索引类型都足够小。
void DeleteList(node *n,node *root) {
    if(n == root) {
        return;
    }
    DeleteList(n->next,root);
    delete n;
}

void addPoints(int arr[], int cup, int arrlen) {
    int value = arr[cup]; // stored for later    
    arr[cup] = 0; // since we are emptying the cup

    for(int i=0; i<value;i++) {
        arr[(cup+i)%arrlen] += 1;
    }

}