извините, если это глупый вопрос, но я пытаюсь написать программу, которая сравнивает 7 чисел, которые пользователь вводит в 7 номеров, которые генерирует компьютер (своего рода лотерейный симулятор). Однако, когда я пытаюсь ввести 7 номеров, которые пользователь вводит, программа вылетает после второго входа. Пожалуйста, помогите, и спасибо заранее!Ошибка EXC_BAD_ACCESS с массивами в C++
Это начало моей основной:
#include <iostream>
#include <iomanip>
#include "Implementation.hpp"
using namespace std;
int main()
{
string name;
cout << "What is your name?\n";
getline(cin, name);
while(1 != 0) //I know this will never be true, I'm just doing it
//because the return statement will
{ //end the program anyways if the user inputs 2
int *userNums = new int[7];
int *winningNums = new int[7];
int cont;
int matches;
cout << "LITTLETON CITY LOTTO MODEL\n";
cout << "--------------------------\n";
cout << "1) Play Lotto\n";
cout << "2) Quit Program\n";
cin >> cont;
if(cont == 2)
return 0;
getLottoPicks(&userNums);
И это функция getLottoPicks:
void getLottoPicks(int *picks[])
{
int numsAdded = 0, choice;
while(numsAdded <= 7)
{
cout << "Please input a valid number as your lotto decision.\n";
cin >> choice;
if(noDuplicates(*picks, choice) == false)
continue;
*picks[numsAdded] = choice;
numsAdded++;
}
}
Я абсолютно уверен, что это проблема с указателями, что я пытаясь использовать, но без них я не могу фактически изменить массивы, которые я не думаю, и я не мог заставить функцию возвращать массив.
Спасибо за быстрый ответ и для ловли ВЫКЛЮЧЕНО одной ошибки, однако код не будет компилироваться, когда я попробуйте передать (userNums) в качестве параметра вместо (& userNums) и убрать звездочку от picks [numsAdded] = выбор; заставляет его не компилироваться. Еще раз спасибо за помощь, и, надеюсь, этот вопрос не слишком серьезен. –
Подпись getLottoPicks изменилась - теперь она принимает только 'int *', вам также придется внести аналогичные изменения в подпрограмму 'noDuplicates' – Petesh