Где в проверке на выигрыш ошибка. да и так где есть ошибки ? 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 < < "|" < < table[i][j] < < ' '; } cout < < '|'; cout < < endl; } 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++) { for (int j(0); j< 3; j++) { cout < < "|" < < l + 1 < < ' '; table[i][j] = char(49 + l); l++; } cout < < "|"; cout < < endl; } cout < < "\nдля хода нажмите на цифру ячейки поля\n"; cout < < "для начала игры нажмите клавишу"; int i = 0; cout < < "ведите имя 1 игрока за x: "; cin.getline(name1, 30); cout < < "ведите имя 2 игрока за 0: "; cin.getline(name2, 30); while (! { if (i == 9 & & ! ( { cout < < " \n"; return -1; } system("cls"); if (! { cout < < "вы вели неверные данные! "; } else i++; } system("cls"); if (step) cout < < "победил " < < name2 < < endl; else cout < < "победил " < < name1 < < endl;

Маликакот Маликакот    1   03.09.2019 06:20    2

Ответы
Ксюша10092007 Ксюша10092007  06.10.2020 14:05
Visual Studio 2015
Код Visual C++, Win32, Консоль:

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <random>
#include <time.h>
#include <Windows.h>

using namespace std;

char table[3][3];
char nam1[30];
char nam2[30];
bool xod;

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;
}

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 << "\t";
        for (int j(0); j < 3; j++)
        {
            cout << "| " << table[i][j] << ' ';
        }
        cout << '|';
        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();
}
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика