Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.5 kB
3
Indexable
//ЮФУ, ИКТИБ,МОП ЭВМ
//Программирование и основы теории алгоритмов
//Лабораторная работа 4.1 - Подпрограммы, библиотечные функции
//КТбо1-6, Домбрина Алёна Игоревна
// Задача F
// 16.11.2023
#include <iostream>
#include<cmath>
using namespace std;
void testQueen(int a, int b, int(&array)[8][8]);
void testRook(int a, int b, int(&array)[8][8]);
void testKnight(int a, int b, int(&array)[8][8]);
void (*chees[3])(int a, int b, int(&array)[8][8]) = { testQueen, testRook, testKnight };
int main() {
    char first[3], second[3], third[3];
    gets_s(first);
    gets_s(second);
    gets_s(third);
    int queen = first[0] - 64 - 1;
    int queen2 = first[1] - 48 - 1;
    int rook = second[0] - 64 - 1;
    int rook2 = second[1] - 48 - 1;
    int knight = third[0] - 64 - 1;
    int knight2 = third[1] - 48 - 1;
    int field[8][8] = { 0 };
    for (int x = 0; x < 8; x++)
    {
        for (int y = 0; y < 8; y++)
        {
            (*chees[0])(queen, queen2, field);
            (*chees[1])(rook,rook2,field);
            (*chees[2])(knight, knight2, field);
        }
    }
    field[queen2][queen] = 0;
    field[rook2][rook] = 0;
    field[knight2][knight] = 0;
    int sum = 0;
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            if (field[i][j] == 1) sum++;
           
        }
    }
    cout << sum;
    
    return 0;
}
void testQueen(int a, int b, int(&array)[8][8])
{
    for (int x = 0; x < 8; x++)
    {
        for (int y = 0; y < 8; y++)
        {
                if ((abs(a - y) == abs(b - x)) || a == y || b == x)
                {
                    array[x][y] = 1;
                }
        }
    }
}

void testRook(int a, int b, int(&array)[8][8])
{
    for (int x = 0; x < 8; x++)
    {
        for (int y = 0; y < 8; y++)
        {
            if (a == y || b == x)
            {
                array[x][y] = 1;
            }
        }
    }
}

void testKnight(int a, int b, int(&array)[8][8])
{
    for (int x = 0; x < 8; x++)
    {
        for (int y = 0; y < 8; y++)
        {
            if ((abs(a - y) == 1 && abs(b - x) == 2) || (abs(a - y) == 2 && abs(b - x) == 1))
            {
                array[x][y] = 1;
            }
        }
    }
    
}
Leave a Comment