Вопрос по информатике:
Помогите пожалуйста. где в проверке на выигрыш ошибка. да и так где есть ошибки ?
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); i<3; i++)
for (int j(0); j<3; j++)
cout << "
cout << '
if (step)
cout << "ходит " << name1 << " : ";
else cout << "ходит " << name2 << " : ";
int n;
cin >> n;
if (n<1 || n>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); i<3; i++)
if ((table[i][0] == table[i][1]) && (table[i][0] == table[i][2]))
return true;
else
{
for (int j(0); j < 3; j++)
{
if ((table[i][j] == table[1][i]) && (table[i][j] == table[2][i]))
return true;
}
}
if ((table[0][0] == table[1][1] && table[0][0] == table[2][2]) || (table[0][2] == table[1][1] && table[0][2] == table[2][0]))
return true;
return false;
}
int main()
{
setlocale(LC_ALL, "rus");
cout << "\t\t*** крестики нолики ***\n\n";
cout << "Правила\n";
cout << "играют два игрока на поле 3х3\n";
cout << "побеждает тот кто составит выигрышную комбинацию";
cout << "вид поля\n\n";
int l = 0;
for (int i(0); i<3; i++)
";
cout << endl;
cout << "\nДля хода нажмите на цифру ячейки поля\n";
cout << "Для начала игры нажмите клавишу";
int i = 0;
cout << "ведите имя 1 игрока за X: ";
cin.getline(name1, 30);
cout << "ведите имя 2 игрока за 0: ";
cin.getline(name2, 30);
while (!win())
{
if (i == 9 && !(win()))
{
cout << "ничия!! \n";
return -1;
}
system("cls");
if (!input())
{
cout << "вы вели неверные данные!";
}
else i++;
}
system("cls");
if (step)
cout << "победил " << name2 << endl;
else cout << "победил " << name1 << endl;
- 02.09.2018 14:01
- Информатика
- remove_red_eye 13895
- thumb_up 16
Ответы и объяснения 1
Код Visual C++, Win32, Консоль:
#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;
char table[3][3];
char nam1[30];
char nam2[30];
bool xod;
bool input(int n)
{
if (n9)
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 < 3; i++)
{
if (table[i][0] == table[i][1] && table[i][1] == table[i][2]) return true;
}
for (int i(0); i < 3; i++)
{
if (table[0][i] == table[1][i] && table[1][i] == table[2][i]) return true;
}
if (table[0][0] == table[1][1] && table[1][1] == table[2][2]
|| table[0][2] == table[1][1] && table[1][1] == table[2][0]) return true;
return false;
}
void ПерерисовкаИгровогоПоля()
{
system("cls");
if (xod)
cout << "\tХодит X " << nam1 << " : \n\n";
else cout << "\tХодит 0 " << nam2 << " : \n\n";
for (int i(2); i >= 0; i--)
';
cout << endl;
}
int main()
{
setlocale(LC_ALL, "rus");
do
{
system("cls");
for (int i(0); i < 3; i++)
{
for (int j(0); j < 3; j++)
{
table[i][j] = char('1' + i * 3 + j);
}
}
cout << "\t\t*** крестики нолики ***\n\n";
cout << "\tПравила:\n";
cout << "\tиграют два игрока на поле 3х3\n";
cout << "\tпобеждает тот кто составит выигрышную комбинацию\n";
cout << "\n\tДля хода нажмите на цифру ячейки поля\n";
cout << "\tВведите Имя 1-го. игрока за X: ", cin.getline(nam1, 30);
cout << "\tВведите Имя 2-го. игрока за 0: ", cin.getline(nam2, 30);
int i = 0;
bool L = false, Result;
do
{
ПерерисовкаИгровогоПоля();
if (L) cout << "Вы вели неверные данные!";
L = !input((_getch() - '0'));
Result = win();
}
while (!Result && i < 9);
//system("cls");
ПерерисовкаИгровогоПоля();
if (Result)
{
if (xod)
cout << "\n\n\tПобедил 0 " << nam2 << endl;
else cout << "\n\n\tПобедил X " << nam1 << endl;
}
else cout << "\tНичия!! \n";
cout << "\tВыберите действие: " << "\n\n";
cout << "\t1 - Пройти задачу повторно " << "\n\n";
cout << "\t( Нажмите: 0 Для завершения программы. )" << "\n";
} while (_getch() == '1');
cout << "\n\n\tПроверка задания закончена " << endl << endl;
_getch();
}
- 03.09.2018 20:11
- thumb_up 18
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.