Помогите пожалуйста. где в проверке на выигрыш ошибка. да и так

Помогите пожалуйста. где в проверке на выигрыш ошибка. да и так где есть оплошности ?
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;

Задать свой вопрос
Danil Valahov
bool input(int 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 (xod) table[i][j] = 'X'; xod = false; else table[i][j] = 'O'; xod = true; return true;
Полина Мухар
А в главный программе:
Полина Вохлакова
cout << "\tВведите Имя 2-го. игрока за 0: "; cin.getline(nam2, 30); bool L = false; do system("cls"); if (xod) cout << "\tХодит X " << nam1 << " : \n\n"; else cout << "\tХодит 0 " << nam2 << " : \n\n"; for (int i(0); i<3; i++) cout << " "; for (int j(0); j<3; j++) cout << "" << table[i][j] << ' '; cout << ''; cout << endl; if (L) cout << "вы водили неправильные данные!"; L = !input((_getch() - '0')); if (i == 9 !(win())) cout << "\tНичия!! \n"; return -1; else i++; while (!win());
Киншаков Иван
Но лучше всё переписать...
Farhtdinov Aleksandr
Раздельно ввод, раздельно перерисовка экрана, и делать примерно так:dobool L = !Ввод();ПерерисовкаЭкрана();if (L) СообщениеОбОшибке;while(!win())
Анна Батянина
В функцию можно передавать количество ходов, и как только их станет 9 - ничья, чтобы цикл не засорять
Наталья
В функцию win()
Egor Derzin
Спасибо Громадное. завтра попробую. завтра на дачу и сдавать работу завтра. постараюсь успеть.
Шушвая Виктория
Собственный вариант я выложу, с использованием "_getch()"
Любовь
=))
1 ответ
Visual Studio 2015
Код 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();

Илышева Наталья
Большое Спасибо!
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт