Как проверить, равен ли массив любой другой массив C ++?

Я пытаюсь сделать программу для игры в кости на C ++. В этой программе у меня есть функция с именем «bool_if» (не спрашивайте меня, почему я назвал некоторые вещи так, как я это сделал, я сделал эту программу для себя и не хочу менять имена переменных / функций). Я хочу, чтобы bool_if () проверил, совпадают ли какие-либо элементы в массиве roll_die [].
Извините, если это не имеет смысла, вот исходный код (я прокомментировал в части исходного кода то, что я хочу):

#include <cstdlib>
#include <ctime>
#include <iostream>
#include <unistd.h>
#include <fstream>

using namespace std;

void clear()
{
cout<<"\033[2J\033[1;1H";
}

bool rolled_die[5];

void dice() {
if (die[0] == die[1] || die[0] == die[2] || die[0] == die[3] || die[0] == die[4] || die[0] == die[5]) {
rolled_die[0] = true
}
else if (die[1] == die[2] || die[1] == die[3] || die[1] == die[4] || die[1] == die[5]) {
rolled_die[1] = true
}
else if (die[2] == die[3] || die[2] == die[4] || die[2] == die[5]) {
rolled_die[2] = true
}
else if (die[3] == die[4] || die[3] == die[5]) {
rolled_die[3] = true
}
else if (die[4] == die[5]) {
rolled_die[4] = true
}
}

int finished_score = 0

void bool_if {
if (rolled_die[0] == true || rolled_die[1] == true || rolled_die[2] == true || rolled_die[3] == true || rolled_die[4] == true) {
finished_score++;
}
/* In this part, I need to check if rolled_die[0] is equal to rolled_die[1], or rolled_die[2], etc all the way up to rolled_die[5]. */int main()
{
srand(time(0));

int die[6] = { (rand()%6)+1,(rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1 };
int bet;

ifstream a_file ("Score.txt");
if ( !a_file.is_open() ) {
clear();
cout<<"Score file could not be loaded.  Maybe file doesn't exist?\n";
return 0;
}

int score;
a_file>> score;

clear();
cout<<"How much would you like to bet?\nRemember, you only have $"<< score <<"!\nEnter your bet: ";
cin>> bet;

if ( bet > score ) {
clear();
cout<<"You bet more money then you have!\n";
return 0;
}

clear();
cout<<"Rolling...\n";
usleep(0.1 * 1000000);
cout<<"First die: " << die[0] <<"\n";
usleep(1.3 * 1000000);
cout<<"Second die: " << die[1] <<"\n";
usleep(0.3 * 1000000);
cout<<"Third die: " << die[2] <<"\n";
usleep(2 * 1000000);
cout<<"Fourth die: " << die[3] <<"\n";
usleep(0.3 *1000000);
cout<<"Fifth die: " << die[4] <<"\n";
usleep(1.2 * 1000000);
cout<<"Sixth die: " << die[5] <<"\n";
cout<<"\n\nPress enter to see how you fared.";
cin.get();
clear();

return 0;
}

Также, пожалуйста, скажите, что функция dice () не работает. Я хочу, чтобы dice () проверил наличие пар.

-1

Решение

int die[6] = { (rand()%6)+1,(rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1 };

Замените это следующим:

int die[6] = {1, 2, 3, 4, 5, 6};
std::random_shuffle(die, die+6);

Код ниже работает просто отлично для меня: http://ideone.com/F4Eefj

1

Другие решения

Вы можете значительно упростить этот код, используя for петли. Например, это сравнивает каждый индекс массива с каждым индексом после этого (который, кажется, то, что вы делаете вручную):

#include <iostream>

int main(int argc, char** argv) {
int die[] = { 4, 5, 6, 4, 5, 3 };
const size_t LENGTH = 6;

for(size_t i = 0; i < LENGTH; ++i) {
for(size_t j = i + 1; j < LENGTH; ++j) {
if(die[i] == die[j]) {
std::cout << "Found a pair at (" << i << ", " << j << ")" << std::endl;
}
}
}

return 0;
}

Ваш dice() Функция, кажется, делает это, но вы нигде не вызываете это.

1

По вопросам рекламы [email protected]