Kaybettim ve her şeyi döngülere girip çıkarmaya çalıştım. Ben 20 kez yuvarladım ve diziyi basarken sadece bir rulo çıkıyor. Neyi eksik veya yanlış yapıyorum? Ayrıca, if
ve else if
ifademi nasıl kısaltabilirim, bu yüzden aDie cpp'de bu kadar gereksiz değilsiniz?C++ dizim, rulolarımı kaydetmiyor
Çözüm, işçim yapıcıdaki iş kanununun altında olduğunu bildirmekti.
Başlık dosya 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 Bu bölümde 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();
}
Lütfen Doğru Adlandırma (Değişkenler, İşlevler .. vb.) Kullanın. –
'for' döngüsünde' Roll1.array(); 'ifadesini çağırabilirsiniz. Bu, her zaman "DieFace" dizisini sıfırlar. DieFace'ı ctorda başlatmalısın. –
Sorun değil, "dizideki tüm if-else-if" bloğu sadece "DieFace" için yapılabilir [die1 - 1] = DieFace [die1 - 1] + 1; ' – NathanOliver