Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
-1 / 5 / 0
Регистрация: 14.07.2014
Сообщений: 128

Найти вероятность выпадения крестиков, ноликов и пустой клетки

28.09.2015, 22:48. Показов 1734. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в следующем мой преподаватель скинул мне готовую программу для вычисления вероятности выпадения крестиков , ноликов и пустой клетки.Вот она:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include<iostream>
#include<windows.h> 
using namespace std;
 
//krestiki-1,noliki-2
 
 
bool isKrestikiWin(int m[3][3]) {
 
    if (m[0][0] == 1 && m[0][1] == 1 && m[0][2] == 1)return true;
    if (m[1][0] == 1 && m[1][1] == 1 && m[1][2] == 1)return true;
    if (m[2][0] == 1 && m[2][1] == 1 && m[2][2] == 1)return true;
 
    if (m[0][0] == 1 && m[1][0] == 1 && m[2][0] == 1)return true;
    if (m[0][1] == 1 && m[1][1] == 1 && m[2][1] == 1)return true;
    if (m[0][2] == 1 && m[1][2] == 1 && m[2][2] == 1)return true;
 
    if (m[0][0] == 1 && m[1][1] == 1 && m[2][2] == 1)return true;
    if (m[2][0] == 1 && m[1][1] == 1 && m[0][2] == 1)return true;
 
    return false;
}
 
bool isNolikiWin(int m[3][3]) {
 
    if (m[0][0] == 2 && m[0][1] == 2 && m[0][2] == 2)return true;
    if (m[1][0] == 2 && m[1][1] == 2 && m[1][2] == 2)return true;
    if (m[2][0] == 2 && m[2][1] == 2 && m[2][2] == 2)return true;
 
    if (m[0][0] == 2 && m[1][0] == 2 && m[2][0] == 2)return true;
    if (m[0][1] == 2 && m[1][1] == 2 && m[2][1] == 2)return true;
    if (m[0][2] == 2 && m[1][2] == 2 && m[2][2] == 2)return true;
 
    if (m[0][0] == 2 && m[1][1] == 2 && m[2][2] == 2)return true;
    if (m[2][0] == 2 && m[1][1] == 2 && m[0][2] == 2)return true;
 
    return false;
}
 
void show(int m[3][3]) {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
 
            if (m[i][j] == 1)cout << 'X';
            if (m[i][j] == 2)cout << 'O';
            if (m[i][j] == 0)cout << ' ';
        }
        cout << endl;
    }
}
 
int main() {
    int m[3][3];
    char buf[8];
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            m[i][j] = 0;
        }
    }
 
 
    while (true) {
        system("cls");
        show(m);
        cout << "input your move: ";
        cin.getline(buf, 8);
        int a = atoi(buf);
        int row = a / 10;
        int col = a % 10;
        if (row < 0 || row>2 || col < 0 || col>2) {
            cout << "wrong move" << endl;
            Sleep(1000);
            continue;
        }
 
        m[row][col] = 1;
 
        system("cls");
        show(m);
        Sleep(1000);
 
        if (isKrestikiWin(m)) {
            cout << "YOU win!!!" << endl;
            Sleep(1000);
            break;
        }
 
 
    }
 
 
    return 0;
}
Но на моём компе в визуал студио эта программа не запустилась возникли две непонятные ошибки:
Error 1 error C1070: mismatched #if/#endif pair in file 'c:\program files (x86)\windows kits\8.1\include\um\wingdi.h' c:\program files (x86)\windows kits\8.1\include\um\wingdi.h 6208 1 q12

2 IntelliSense: the #endif for this directive is missing c:\Program Files (x86)\Windows Kits\8.1\Include\um\wingdi.h 11 2 q12
И как я понял это как то связано с версией Виндоус. Что неужели нужна Версия 8.1?
Во всяком случае переименовывание файла ничем мне не помогло у преподавателя после нажатия f5 выскакивал черный экран где можно было забивать значения, а у меня возникают ошибки.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.09.2015, 22:48
Ответы с готовыми решениями:

ИИ для крестиков ноликов на С++
вот написал крестики нолики 3х3 но немогу написать ИИ для компа тупо перебирать все комбинации типа : if(a==a &amp;&amp; a!=' '){...

Робот для крестиков ноликов
import pygame import sys def check_control(mas, sign): # ПРОВЕРКА ВЫЙГРАША zero = 0 capriz_1 = -50 capriz_2 = -50...

Бот для крестиков-ноликов
Хочу написать бота для крестиков-ноликов и вот тут незадача, или нужно перечислять все комбинации что являеться не сильно приятным, :wall: ...

13
28.09.2015, 23:18

Не по теме:

Где такие пре учитесь, если не секрет? :)

0
28.09.2015, 23:20

Не по теме:

wron10, ты больше года на форуме, а пользоваться тегами так и не научился?

0
-1 / 5 / 0
Регистрация: 14.07.2014
Сообщений: 128
29.09.2015, 11:31  [ТС]
И ещё когда два раза кликаю на ошибку возникает непонятное окно wingdi.h в котором содержится не совсем понятный код.Вот его начальные строки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <winapifamily.h>
 
/**************************************************************************
* *
* wingdi.h -- GDI procedure declarations, constant definitions and macros *
* *
* Copyright (c) Microsoft Corp. All rights reserved. *
* *
**************************************************************************/
 
#ifndef _WINGDI_
#define _WINGDI_
Что это?
 Комментарий модератора 
Это отсутствие тегов. Впредь буду наказывать.
0
-1 / 5 / 0
Регистрация: 14.07.2014
Сообщений: 128
01.10.2015, 16:55  [ТС]
В общем как я понял проблема в том что что директива #if не имеет соответствующего #endif. Мне просто хочется понять перед if что нужно Этот # знак поставить или вписать в код endif.
0
-1 / 5 / 0
Регистрация: 14.07.2014
Сообщений: 128
04.10.2015, 11:03  [ТС]
Просто мой преподаватель порекомендовал мне создать пустой проект без прекомпиляционных заголовков. То есть мне нужно напечатать всё это?? удалив :
код Си++________________________
1 #include<iostream>
2 #include<windows.h>
я это сделал, но ошибок стало даже больше.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
04.10.2015, 11:42
То есть, ваш код не имеет никакого отношения к вычислению вероятностей, является какой-то заготовкой для игры в крестики-нолики с самим собой и написан индусом. А почему он к тому же и не работает уже не особо важно.
0
-1 / 5 / 0
Регистрация: 14.07.2014
Сообщений: 128
04.10.2015, 11:58  [ТС]
Ну да это отчасти так, нужно вычислить не вероятность, а работает ли эта программа так как это нужно. Ну а про вторую часть вопроса ну а, что вы хотели? Эта программа по сути итак прорыв для меня,и фактически на другом компьютере(у преподавателя) она работала, может потому что у него visual studio 2015, но у меня проверка этой программы не запускается по непонятным мне причинам. И мне хочется узнать, что там в коде не так что она запускается, программа по сути не сверхсложная, но ответа я жду уже несколько дней.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
04.10.2015, 12:18
Паузу делать через std::this_thread::sleep_for(std::chrono: :seconds(1));, выкинуть нестандартный windows.h, вместо него добавить #include <thread> и #include <chrono>. Компилятор использовать вышедший после 2011 года.
0
-1 / 5 / 0
Регистрация: 14.07.2014
Сообщений: 128
04.10.2015, 15:39  [ТС]
у меня VS 2013. Да ещё, а #include<iostream> оставить?

Добавлено через 3 часа 17 минут
Я понял что первая строка остается но как я понимаю паузой является sleep(1000);? я заменил как мне рекомендовали но появились новые ошибки.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
05.10.2015, 09:36
Ну так пишите что за ошибки. У меня, после названных выше замен, все компилируется нормально.
0
-1 / 5 / 0
Регистрация: 14.07.2014
Сообщений: 128
05.10.2015, 10:32  [ТС]
Вообще у меня была опечатка сейчас всё исправил и проверка запускается.Программа работает!!!
Но на будущее меня часто упрекают модераторы в том что у меня нет тегов цифры то я легко могу расставить но верхний заголовок (Код C++ Выделить код) я имею ввиду как мне прочертить сплошную линию под ним ,когда я черчу а затем начинаю печатать цифры сдвигаются.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
05.10.2015, 10:34
Нужно в начале С++ кода написать CPP в квадратных скобках. В конце кода - /CPP в квадратных скобках. Цифры, заголовок и подсветка синтаксиса сами проставятся.
0
-1 / 5 / 0
Регистрация: 14.07.2014
Сообщений: 128
05.10.2015, 10:36  [ТС]
Ну то есть просто добавить такие знаки [CPP]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.10.2015, 10:36
Помогаю со студенческими работами здесь

Функция для крестиков-ноликов
Здравствуйте, я пишу свою первую программу на функциональном языке программирования, поэтому возникают большие сложности. Можете...

Алгоритм minimax для крестиков-ноликов
В общем, написал я minimax для крестиков-ноликов, а враг отчего-то &quot;не хочет&quot; выигрывать. При компиляции ошибок нет, но обыграть его ну...

Алгоритм минимакс для Крестиков-Ноликов
Объясните пожалуйста следующую минимакс функцию // основная минимакс-функция static int Minimax(int hypothetical_board, int...

Сделать графический интерфейс для крестиков-ноликов
Здравствуйте. Есть код для крестиков-ноликов, все более-менее работает. Хочу сделать GUI с помощью PyQT, пока сложно все это доходит до...

Искусственный интеллект для больших крестиков-ноликов
Пишу игрушку - клеточное поле 19*19, крестики и нолики, надо составить 5 в ряд. Написал, все, кроме искусственного интеллекта. Не могу даже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru