Тема: Помилка "Читання пам'яті неможливо"
Доброго вечора! Вирішив написати прості консольні Хрестики-нулики, зіткнувся з проблемою.
▼вибиває ось цю помилку

Помилка виникає, коли я намагаюся зациклити функцію, дописавши в кінці - bot();
▼Ця функція
void bot() {
    int arr02[] = { 8,10,12,22,24,26,36,38,40 }; // Числа в масиві - це індекси чисел 1,2,3,4,5,6,7,8,9 в масиві arr[]
    srand((unsigned)time(NULL));
     int index = rand() % 9; // випадкове число 
     
         if (arr[arr02[index]] != 'X' && 'O') { 
             arr[arr02[index]] = 'O';
         }
         else {
             bot();     
         }
     }Суть в тому, що бот виставляє "нулики" в випадкову клітинку. 
Я роблю, спочатку перевірку, чи клітинка не занята вже "нулем" або "хрестиком", якщо так: то функція повинна виконуватися заново, якщо ні: то в клітинку ставиться нулик . 
▼Весь код програми
#include <iostream>
#include<locale.h> 
#include <time.h>
using namespace std;
// Масив дошки
char arr[] ={
    '-','-','-','-','-','-','-',
    '|','1','|','2','|','3','|',
    '-','-','-','-','-','-','-',
    '|','4','|','5','|','6','|',
    '-','-','-','-','-','-','-',
    '|','7','|','8','|','9','|',
    '-','-','-','-','-','-','-',
};
// Прототипи функцій
void vubir();
void doska();
void bot();
// Виклики всіх функцій
void main() {
    setlocale(LC_ALL, "RUS");
    doska();
    cout << "Ви граэте за хрестики. Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
    
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
        
        vubir();
        bot();
        doska();
        //canInput();
        cout << "Нажмiть: 1,2,3,4,5,6,7,8 або 9, " << endl;
    
        
    system("pause");
    
}
// Малюємо дошку.
void doska() {
    for (int a = 0;a < 7;a++)
        cout << arr[a];
    cout << endl;
    for (int a = 7;a < 14;a++)
        cout << arr[a];
    cout << endl;
    for (int a = 14; a<21; a++)
        cout << arr[a];
    cout << endl;
    for (int a = 21;a<28;a++)
        cout << arr[a];
    cout << endl;
    for (int a = 28; a<35; a++)
        cout << arr[a];
    cout << endl;
    for (int a = 35;a<42;a++)
        cout << arr[a];
    cout << endl;
    for (int a = 42;a<49;a++)
        cout << arr[a];
    cout << endl;
}
// Бот - противник.
void bot() {
    int arr02[] = { 8,10,12,22,24,26,36,38,40 }; // Числа в масиві - це індекси чисел 1,2,3,4,5,6,7,8,9 в масиві arr[]
    srand((unsigned)time(NULL));
     int index = rand() % 9; // випадкове число 
     
         if (arr[arr02[index]] != 'X' && 'O') {
             arr[arr02[index]] = 'O';
         }
         else {
             bot();     
         }
     }
// Вибір гравцем де поставити хрестик.
void vubir() {
    int step;
    cin >> step;
    switch (step) {
    case 1:
        arr[8] = char('X');
        doska();
        break;
    case 2:
        arr[10] = char('X');
        doska();
        break;
    case 3:
        arr[12] = char('X');
        doska();
        break;
    case 4:
        arr[22] = char('X');
        doska();
        break;
    case 5:
        arr[24] = char('X');
        doska();
        break;
    case 6:
        arr[26] = char('X');
        doska();
        break;
    case 7:
        arr[36] = char('X');
        doska();
        break;
    case 8:
        arr[38] = char('X');
        doska();
        break;
    case 9:
        arr[40] = char('X');
        doska();
        break;
    }
}
