Не удается найти фатальную ошибку при использовании вектора

Я пытался создать программу вдохновителя для своей лаборатории в школе для 4 случайных чисел от 1 до 6. Я запустил свой код, чтобы найти эту ошибку:

Ошибка отладки!

Программа: C: \ windows \ SYSTEM32 \ MSVCP140D.dll Файл: c: \ Program Files
(x86) \ Microsoft Visual Studio
14.0 \ vc \ include \ vector Строка: 1232

Выражение: нижний индекс вектора вне диапазона

Для получения дополнительной информации о том, как ваша программа может вызвать утверждение
ошибка, см. документацию по Visual C ++ для подтверждений.

(Нажмите «Повторить» для отладки приложения)

Я попытался повторить попытку, но он открывает другое диалоговое окно, в котором говорится, что отладка достигла точки останова, после чего я не смог продолжить отладку.
Вот мой код для тех, кто заинтересован (компилятор Microsoft Visual Studio):

#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>

using namespace std;

void getRandoms(vector<int> &random);
void getGuesses(vector<int> &guess);
void checkGuesses(const vector<int> &random, const vector<int> guess);

int main()
{
srand(time(0));
vector<int> random(4, 0);
vector<int> guess(4, 0);
getRandoms(random);

cout << "Welcome to Mastermind" << endl << endl;

getGuesses(guess);
checkGuesses(random, guess);

system("pause");

return 0;
}

void getRandoms(vector<int> &random)
{
for (int i = 0; i < 4; i++)
{
random[i] = (rand() % 6) + 1;
}
cout << "answer key: " << random[1] << " " << random[2] << " " << random[3] << " " << random[4] << endl;
}
void getGuesses(vector<int> &guess)
{
cout << "Please enter your four numerical guesses (space separated): ";
for (int j = 0; j < 4; j++)
cin >> guess[j];
cout << endl << endl;
}
void checkGuesses(const vector<int> &random, const vector<int> guess)
{
int clocat = 0;
int cnumb = 0;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (i == j && random[i] == guess[j])
clocat = clocat + 1;
else if (i != j && random[i] == guess[j])
cnumb = cnumb + 1;
}
}
if (clocat == 4)
cout << "Correct!" << endl << endl << "You are a MasterMind!";
else
cout << "You have " << cnumb << " correct number(s) and " << clocat << " correct location(s)." << endl << endl;
}

Я подозреваю, что это ошибка моего неправильного использования вектора, но я не могу точно определить свою ошибку. Спасибо за любую помощь!

0

Решение

Индекс вектора начинается с 0, а не с 1

void getRandoms(vector<int> &random)
{
for (int i = 0; i < 4; i++)
{
random[i] = (rand() % 6) + 1;
}
cout << "answer key: " << random[0] << " " << random[1] << " " << random[2] << " " << random[3] << endl;
}
3

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

cout << "answer key: " << random[1] << " " << random[2] << " " << random[3] << " " << random[4] << endl;

Выше строки является причиной ошибки.

Если вы пытаетесь получить доступ к четвёртая Индекс в вашем коде вызывает ошибки сегментации.

2

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