Форум программистов, компьютерный форум CyberForum.ru

крестик-нолик - функция пoбеды - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ получить системное время http://www.cyberforum.ru/cpp-beginners/thread202273.html
здравствуйте. как/с помощью какой функции можно полям своей структуры присвоить значения, соответствующих системным дате и времени?
C++ Язык С.Программирование обработки структур данных. Всем добрый вечер! народ это для меня сложновато заранее всем спасибо.emal.t.bekzat_ismail@mail.ru Тема:Программирование задач обработки структур данных. Цель лабораторной работы:получить навыки по обработке структур данных. Язык С (си) Даны характеристики обменных пунктов :название,курс покупки валюты , курс продажи валюты,адрес и телефон. Вывести адреса и названия обменных пунктов с... http://www.cyberforum.ru/cpp-beginners/thread202269.html
C++ Одномерные массивы на Visual C++ 2008 : я новичек HELP
Задача №1 Сформировать одномерный массив целых чисел, используя датчик случайных чисел и выполнить задание c использованием индексов: Условие: Удалить элементы, индексы которых кратны 3. Добавить после каждого отрицательного элемента массива элемент со значением | m+1|. Задание №2 Сформировать одномерный массив целых чисел, используя ввод данных с клавиатуры и выполнить задание: c...
C++ Три задачи на матрицы
здавствуйте, помогите пожалуйстарешить пару задачек оч надо: 1) найти номер перого максимального элемента среди элементов, лежащего в диапазоне от а до в и расположенных правее первого положительного элемента 2)проверить, все ли строки матрицы содержат хотябы один нулевой элемент. Если нет то все отрицательные элементы матрицы заменить на нулевыею 3)дан массив а размерностью 30. Элементами...
C++ Восьмимерка: поиск вектора в матрице http://www.cyberforum.ru/cpp-beginners/thread202260.html
Дана матрица и вектор (могут быть любых размеров). Найти в матрице линейную последовательность элементов, совпадающих с элементами данного вектора, причем вектор может располагаться по любому из восьми направлений (по вертикалям, горизонталям, диагоналям). Сказали, что это аналогия какого-то известного ребуса. ПОМОГИТЕ или хотя бы натолкните на идею решения
C++ rand() генератор случайных чисел rand() подскажите пожелуста как работает ета штука. что означает %200, %200-100. какой принцип роботы подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
06.12.2010, 20:22     крестик-нолик - функция пoбеды
См. комментарии:
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
void comp(int x[][n])//Ход компьютера. Если рядом с крестиком есть крестик,то рядом с другим крестиком написать 0
{
        int a=0,b=0, X, N;
                bool fl=true;
       for(int i=0; fl && i<n;i++)// в этом цикле проверка по строкам
           {
                   X=0, N=0;
                   for(int j=0;fl && j<n;j++)
                   {
                           if(x[i][j]==2) X++;// если в строке встретился нолик то переменную X увеличиваем на 1
                           if(x[i][j]==1) N++;//если в строке встретился крестик то переменную N увеличиваем на 1
                   }
                   if(X==2 && N==0)// если в строке два нолика и нет крестиков (т.е. мы рассматриваем не только два рядом стоящих нолика, но и через одну свободную клетку)
                   {
                           fl=false;
                           for(int j=0; j<n; j++)
                                   if(x[i][j]==0)
                                           x[i][j]=2;// то вычисляем, где свободная клетка и ставим туда нолик
                   }
           }
       for(i=0; fl && i<n;i++)//в этом цикле аналогичная проверка по столбцам
           {
                   X=0, N=0;
                   for(int j=0;fl && j<n;j++)
                   {
                           if(x[j][i]==2) X++;
                           if(x[j][i]==1) N++;
                   }
                   if(X==2 && N==0)
                   {
                           fl=false;
                           for(int j=0; j<n; j++)
                                   if(x[j][i]==0)
                                           x[j][i]=2;
                   }
           }
           X=0, N=0;
       for( i=0; fl && i<n;i++)// здесь идет похожая проверка по главной диагонали
           {
                           if(x[i][i]==2) X++;
                           if(x[i][i]==1) N++;
           }
           if(X==2 && N==0)
           {
                   fl=false;
                   for(int i=0; i<n; i++)
                           if(x[i][i]==0)
                                   x[i][i]=2;
           }
           X=0, N=0;
       for( i=0; fl && i<n;i++)// здесь идет похожая проверка по побочной диагонали
           {
                           if(x[2-i][i]==2) X++;
                           if(x[2-i][i]==1) N++;
           }
           if(X==2 && N==0)
           {
                   fl=false;
                   for(int i=0; i<n; i++)
                           if(x[2-i][i]==0)
                                   x[2-i][i]=2;
           }
           //
        for( i=0; fl && i<n;i++)//если вышеперечисленных вариантов нет, то ищем нолик с пустой рядом клеткой и ставим туда нолик
                for(int j=0;fl && j<n;j++)
                                        if(x[i][j]==2)
                                        {
                                                if(i>0 && x[i-1][j]==0)// здесь проверка верхней клетки на то что она свободна и если она свободна то ставим туда нолик
                                                {
                                                        fl=false; x[i-1][j]=2;
                                                }
                                                else
                                                if(j>0 && x[i][j-1]==0)// здесь проверка левой клетки на то что она свободна и если она свободна то ставим туда нолик
                                                {
                                                        fl=false; x[i][j-1]=2;
                                                }
                                                else
                                                if(i<2 && x[i+1][j]==0)// здесь проверка нижней клетки на то что она свободна и если она свободна то ставим туда нолик
                                                {
                                                        fl=false; x[i+1][j]=2;
                                                }
                                                else
                                                if(j<2 && x[i][j+1]==0)// здесь проверка правой клетки на то что она свободна и если она свободна то ставим туда нолик
                                                {
                                                        fl=false; x[i][j+1]=2;
                                                }
                                                else
                                                if(i>0 && j>0 && x[i-1][j-1]==0)// здесь проверка левой верхней клетки на то что она свободна и если она свободна то ставим туда нолик
                                                {
                                                        fl=false; x[i-1][j-1]=2;
                                                }
                                                else
                                                if(i>0 && j<2 && x[i-1][j+1]==0)// здесь проверка правой верхней клетки на то что она свободна и если она свободна то ставим туда нолик
                                                {
                                                        fl=false; x[i-1][j+1]=2;
                                                }
                                                else
                                                if(i<2 && j<2 && x[i+1][j+1]==0)// здесь проверка нижней правой клетки на то что она свободна и если она свободна то ставим туда нолик
                                                {
                                                        fl=false; x[i+1][j+1]=2;
                                                }
                                                else
                                                if(i<2 && j>0 && x[i+1][j-1]==0)// здесь проверка нижней левой клетки на то что она свободна и если она свободна то ставим туда нолик
                                                {
                                                        fl=false; x[i+1][j-1]=2;
                                                }
                                        }
                 if(fl)// если нет и такого варианта, то выбираем место очередному нолику с помощью rand()
                 {
                         for(int i=0;i<n;i++)
                                 for(int j=0;j<n;j++)
                                 {                       
 rrand:          a=rand()%3;
                        b=rand()%3;
                                if(x[a][b]==0)x[a][b]=2;
                        else goto rrand;
                        i=n;
                                j=n;
                }
                 }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru