Помогите пожалуйста. где в проверке на выигрыш ошибка. да и так
Помогите пожалуйста. где в проверке на выигрыш ошибка. да и так где есть оплошности ?
include
include
include
include
include
using namespace std;
using namespace std;
char table[3][3];
char name1[30];
char name2[30];
bool step;
bool input()
for (int i(0); ilt;3; i++)
for (int j(0); jlt;3; j++)
cout lt;lt; "" lt;lt; table[i][j] lt;lt; ' ';
cout lt;lt; '';
cout lt;lt; endl;
if (step)
cout lt;lt; "прогуливается " lt;lt; name1 lt;lt; " : ";
else cout lt;lt; "ходит " lt;lt; name2 lt;lt; " : ";
int n;
cin gt;gt; n;
if (nlt;1 ngt;9)
return false;
int i, j;
if (n % 3 == 0)
i = n / 3 - 1;
j = 2;
else
j = n % 3 - 1;
i = n / 3;
if (table[i][j] == 'O' table[i][j] == 'X')
return false;
if (step)
table[i][j] = 'X';
step = false;
else table[i][j] = 'O'; step = true;
return true;
bool win()
for (int i(0); ilt;3; i++)
if ((table[i][0] == table[i][1]) amp;amp; (table[i][0] == table[i][2]))
return true;
else
for (int j(0); j lt; 3; j++)
if ((table[i][j] == table[1][i]) amp;amp; (table[i][j] == table[2][i]))
return true;
if ((table[0][0] == table[1][1] amp;amp; table[0][0] == table[2][2]) (table[0][2] == table[1][1] amp;amp; table[0][2] == table[2][0]))
return true;
return false;
int main()
setlocale(LC_ALL, "rus");
cout lt;lt; "\t\t*** крестики нолики ***\n\n";
cout lt;lt; "Правила\n";
cout lt;lt; "играют два игрока на поле 3х3\n";
cout lt;lt; "побеждает тот кто составит выигрышную комбинацию";
cout lt;lt; "вид поля\n\n";
int l = 0;
for (int i(0); ilt;3; i++)
for (int j(0); jlt;3; j++)
cout lt;lt; "" lt;lt; l + 1 lt;lt; ' ';
table[i][j] = char(49 + l);
l++;
cout lt;lt; "";
cout lt;lt; endl;
cout lt;lt; "\nДля хода нажмите на цифру ячейки поля\n";
cout lt;lt; "Для начала забавы нажмите клавишу";
int i = 0;
cout lt;lt; "ведите имя 1 игрока за X: ";
cin.getline(name1, 30);
cout lt;lt; "водите имя 2 игрока за 0: ";
cin.getline(name2, 30);
while (!win())
if (i == 9 amp;amp; !(win()))
cout lt;lt; "ничия!! \n";
return -1;
system("cls");
if (!input())
cout lt;lt; "вы водили неправильные данные!";
else i++;
system("cls");
if (step)
cout lt;lt; "одолел " lt;lt; name2 lt;lt; endl;
else cout lt;lt; "одолел " lt;lt; name1 lt;lt; endl;
Код Visual C++, Win32, Консоль:
include "stdafx.h"
include lt;iostreamgt;
include lt;conio.hgt;
include lt;randomgt;
include lt;time.hgt;
include lt;Windows.hgt;
using namespace std;
char table[3][3];
char nam1[30];
char nam2[30];
bool xod;
bool input(int n)
if (nlt;1 ngt;9)
return false;
int i, j;
if (n % 3 == 0)
i = n / 3 - 1;
j = 2;
else
j = n % 3 - 1;
i = n / 3;
if (table[i][j] == 'O' table[i][j] == 'X')
return false;
if (xod)
table[i][j] = 'X';
xod = false;
else table[i][j] = 'O'; xod = true;
return true;
bool win()
for (int i(0); i lt; 3; i++)
if (table[i][0] == table[i][1] amp;amp; table[i][1] == table[i][2]) return true;
for (int i(0); i lt; 3; i++)
if (table[0][i] == table[1][i] amp;amp; table[1][i] == table[2][i]) return true;
if (table[0][0] == table[1][1] amp;amp; table[1][1] == table[2][2]
table[0][2] == table[1][1] amp;amp; table[1][1] == table[2][0]) return true;
return false;
void ПерерисовкаИгровогоПоля()
system("cls");
if (xod)
cout lt;lt; "\tХодит X " lt;lt; nam1 lt;lt; " : \n\n";
else cout lt;lt; "\tХодит 0 " lt;lt; nam2 lt;lt; " : \n\n";
for (int i(2); i gt;= 0; i--)
cout lt;lt; "\t";
for (int j(0); j lt; 3; j++)
cout lt;lt; " " lt;lt; table[i][j] lt;lt; ' ';
cout lt;lt; '';
cout lt;lt; endl;
int main()
setlocale(LC_ALL, "rus");
do
system("cls");
for (int i(0); i lt; 3; i++)
for (int j(0); j lt; 3; j++)
table[i][j] = char('1' + i * 3 + j);
cout lt;lt; "\t\t*** крестики нолики ***\n\n";
cout lt;lt; "\tПравила:\n";
cout lt;lt; "\tиграют два игрока на поле 3х3\n";
cout lt;lt; "\tпобеждает тот кто составит выигрышную комбинацию\n";
cout lt;lt; "\n\tДля хода нажмите на цифру ячейки поля\n";
cout lt;lt; "\tВведите Имя 1-го. игрока за X: ", cin.getline(nam1, 30);
cout lt;lt; "\tВведите Имя 2-го. игрока за 0: ", cin.getline(nam2, 30);
int i = 0;
bool L = false, Result;
do
ПерерисовкаИгровогоПоля();
if (L) cout lt;lt; "Вы водили неправильные данные!";
L = !input((_getch() - '0'));
Result = win();
while (!Result amp;amp; i lt; 9);
//system("cls");
ПерерисовкаИгровогоПоля();
if (Result)
if (xod)
cout lt;lt; "\n\n\tПобедил 0 " lt;lt; nam2 lt;lt; endl;
else cout lt;lt; "\n\n\tПобедил X " lt;lt; nam1 lt;lt; endl;
else cout lt;lt; "\tНичия!! \n";
cout lt;lt; "\tВыберите деяние: " lt;lt; "\n\n";
cout lt;lt; "\t1 - Пройти задачку повторно " lt;lt; "\n\n";
cout lt;lt; "\t( Нажмите: 0 Для окончания программки. )" lt;lt; "\n";
while (_getch() == '1');
cout lt;lt; "\n\n\tПроверка задания окончена " lt;lt; endl lt;lt; endl;
_getch();
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Физика.
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.