lundi 2 avril 2018

Vector: range error at memory

I have been programming a bit with C++ in CodeBloks before and since some time i started to program in MS Studio. At the moment im programming a little game from the book: Programming: Principles and Practice using C++. Exercise 12 of chapter 5. I have been looking around on the internet to fix the range memory error which keeps occuring whatever I try (see printscreen link). The description about the program is in the code itself. I also did make the vectors a hard coded (if I say that right) size to make the program stop complaining about their memory range errors.

Note: Yes this is a school exercise/practice as well. But I rather ask what I did wrong then copy paste the code from the internet..

Please look over my code and see or I made some mistake with me vectors, cause that is where my errors are probably comming from.

Kind regards,

me ^^

printscreen link

Program:

#include "std_lib_facilities.h"

int main(){

bool while_bit = false;
vector<int>bulls_cows(4);
vector<int>inputs_arr(4);

//Generate 4 random numbers.
for (int a = 0; a < 4; ++a){
    bulls_cows[a] = a + 1;//randint(a) % 9 + 0; //random number between 0 and 9.
}
//bulls_cows[1] = randint(10);
cout << "For this game, called Bulls and Cows, you have to guess the four right numbers between 0 and 9.\n";
cout << "When one or more digets are right and in the right position the program will say the number of Bulls.\n";
cout << "When one or more digets are right but not in the right position the program will say the number of Cows.\n";
cout << "Please enter 4 number by filling in ONE positive diget and press enter. Do this four times and wait for the result.\n";

for (int z = 0; z < 4; ++z) {
    cout << bulls_cows[z] << "\n";
}

while (while_bit == false) {
    int input = 0; //Reset of input, cows and bulls every round.
    int cows = 0;
    int bulls = 0;

    cin >> input;

    //Test for legit input. If legit then it writes it to the array called "input_arr"
    if (input < 0 || input > 9) {
        cout << "Number must be between 0 and 9.\n";
    }
    else {
        inputs_arr.push_back(input);
    }
    //Check or 4 numbers have been given.
    if (sizeof(inputs_arr) < 4) {
        //Check for equal numbers on same spot.
        for (int b = 0; b < 4; ++b) {
            if (inputs_arr[b] == bulls_cows[b]) {
                bulls + 1;
            }
        }
        //Check for a number in all spots.
        for (int c = 0; c < 4; ++c) {
            if (inputs_arr[c] == bulls_cows[0] || bulls_cows[1] || bulls_cows[2] || bulls_cows[3]) {
                cows +1;
            }
        }
    }

    if (bulls < 4) {
        cout << "You did not guess the right combination.\n";
        cout << "Number of bulls: " << bulls << "\n";
        cout << "Number of cows: " << cows << "\n";
        inputs_arr[0, 0, 0, 0]; //Empty array.
    }

    if (bulls == 4) {
        cout << "You guessed the right combination!\n";
        while_bit = true;
}

}

keep_window_open(); //To keep terminal open since MS Studio doesn't itself.

return 0;

Aucun commentaire:

Enregistrer un commentaire