C ++我的数组没有保存我的卷

时间:2016-04-05 17:07:36

标签: c++ arrays loops

我很茫然,并试图将所有内容移入和移出循环。我滚动20次,打印阵列时只显示一个卷。我错过了什么或做错了什么?另外,我如何缩短ifelse if语句,以便在aDie cpp中不那么多余?

解决方案是在构造函数中声明我的数组,工作代码如下所示。

头文件aDie.h

#define aDie_H 
class aDie {
public:
    aDie(); 
    void numRolls();
    void getSeed();
    void roll();   
    void rolls(); 
    void array(); 
    void Print();

private:   
    int Rolls;
    int dSeed;
    int die1; 
    int die2;
    int sum;
    int DieFace[6]; 
    int i = 0;
};

Cpp文件aDie.cpp

#include "aDie.h" 
#include <iostream>  
#include <ctime> 
using namespace std;

aDie::aDie() { //constructor sets values to default 0
    die1 = 0;
    die2 = 0;
    dSeed = 0; 
    DieFace[0] = 0; //declare array
    DieFace[1] = 0;
    DieFace[2] = 0;
    DieFace[3] = 0;
    DieFace[4] = 0;
    DieFace[5] = 0;
}  
void aDie::numRolls() {
    cout << "Enter number of times for die to be rolled: ";
    cin >> Rolls;
    return;
}
void aDie::getSeed() {  //gets seed 
    cout << "Enter desired seed number: ";
    cin >> dSeed; 
    srand(dSeed);
    return;
}
void aDie::roll() { //rng for one die
    die1 = 1 + rand() % 6;   
}    
void aDie::array() {
    DieFace[die1 - 1] = DieFace[die1 - 1] + 1;
}

void aDie::Print() {
    for (i = 0; i < 6; i++) { //loop to display dieFace[i] frequency
        cout << i + 1 << " Was Rolled: " << DieFace[i] << " Times." << endl;
    }
} 

Main.cpp的

#include <iostream>
using namespace std;

#include "aDie.h"  

void game1();   

int main(){  
    game1();  

    system("Pause");
        }  

        void game1(){ 
        int i = 0;
        int Rolls = 0; 

        cout << "Enter number of times for die to be rolled: ";
        cin >> Rolls;

        aDie Roll1; //calls default constructor
        Roll1.getSeed(); //calls seed  

        for (i = 0; i < Rolls; i++) {
            Roll1.roll(); //rolls die
            Roll1.array();
        } 

        Roll1.Print();
} 

1 个答案:

答案 0 :(得分:1)

在这部分:

void aDie::array() {
    DieFace[0] = 0; //declare array
    DieFace[1] = 0;
    DieFace[2] = 0;
    DieFace[3] = 0;
    DieFace[4] = 0;
    DieFace[5] = 0;

    if (die1 == 1)
        DieFace[0] = DieFace[0] + 1;
    else if (die1 == 2)
        DieFace[1] = DieFace[1] + 1;
    else if (die1 == 3)
        DieFace[2] = DieFace[2] + 1;
    else if (die1 == 4)
        DieFace[3] = DieFace[3] + 1;
    else if (die1 == 5)
        DieFace[4] = DieFace[4] + 1;
    else if (die1 == 6)
        DieFace[5] = DieFace[5] + 1;
}

在调用数组时,再次将数组中的每个值归零。因此,当你在循环之后调用print时,只有最后一次滚动仍然在数组中时,这个滚动并调用aDie::array()的次数很少。