Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2022, 21:41   #11
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

Алексей1153, Спасибо большое. А можно это как-то сделать с выводом в консоль?
Darklight вне форума Ответить с цитированием
Старый 12.07.2022, 07:15   #12
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 965
По умолчанию

Darklight, с выводом чего именно? Для вывода используй std::cout
Алексей1153 вне форума Ответить с цитированием
Старый 13.07.2022, 15:36   #13
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

В коде чуть нужно изменить вывод
Код:
#include <iostream>
#include <iomanip>
#include <cmath>

enum coord { a, b, c, d, e, f, g, h };
enum color { black, white };

struct s_coord
{
    coord x_letter;
    int y_number; //1..8
    bool ifSomePartsAreEqual(const s_coord& r) const
    {
        return (x_letter == r.x_letter || y_number == r.y_number);
    }

    bool ifAbsDifferencesAreEqual(const s_coord& r) const
    {
        return std::abs(((int)x_letter) - ((int)r.x_letter)) == std::abs(y_number - r.y_number);
    }
    friend std:: ostream& operator<<(std:: ostream& os, const s_coord& f)
    {
        os << f.x_letter << ":" << f.y_number;
        return os;
    }
};

bool operator==(const s_coord& l, const s_coord& r)
{
    return l.x_letter == r.x_letter && l.y_number == r.y_number;
}

bool operator!=(const s_coord& l, const s_coord& r)
{
    return !(l == r);
}


class Figure
{
protected:
    s_coord m_coord;
    color m_color; //цвет
public:
    Figure(const s_coord m_coord, color z) :m_coord(m_coord), m_color(z) {}
    virtual bool Turn(const s_coord new_coord) = 0;
    friend std:: ostream& operator<<(std:: ostream& os, const Figure& f)
    {
        os << "coord: " << f.m_coord << ",color: " << f.m_color << std::endl;
        return os;
    }
};

class Castle : public Figure
{
public:
    Castle(const s_coord m_coord, color z) :Figure(m_coord, z) {}
    bool Turn(const s_coord new_coord)
    {
        if (m_coord != new_coord)
        {
            if (m_coord.ifSomePartsAreEqual(new_coord))
            {
                m_coord = new_coord;
                return true;
            }
        }

        return false;
    }
};

class Bishop : public Figure
{
public:
    Bishop(const s_coord m_coord, color z) :Figure(m_coord, z) {}
    bool Turn(const s_coord new_coord)
    {
        if (m_coord != new_coord)
        {
            if (m_coord.ifAbsDifferencesAreEqual(new_coord))
            {
                m_coord = new_coord;
                return true;
            }
        }

        return false;
    }
};


class Queen : public Figure
{
public:
    using Figure::Figure;
    Queen(const s_coord m_coord, color z) :Figure(m_coord, z) {}
    bool Turn(const s_coord new_coord)
    {
        if (m_coord != new_coord)
        {
            if (m_coord.ifSomePartsAreEqual(new_coord))
            {
                m_coord = new_coord;
                return true;
            }

            if (m_coord.ifAbsDifferencesAreEqual(new_coord))
            {
                m_coord = new_coord;
                return true;
            }
        }

        return false;
    }
};

int main()
{
    Figure* pf;
    s_coord te = { e,5 };
    s_coord th = { h,8 };

    pf = new Queen(te, white);
    std::cout << *pf;
    pf->Turn(th);
    std::cout << *pf;
    delete pf;
    std::cout << std::endl;

    pf = new Bishop(th, black);
    std::cout << *pf;
    pf->Turn(te);
    std::cout << *pf;
    delete pf;
    std::cout << std::endl;

    pf = new Castle(te, black);
    std::cout << *pf;
    pf->Turn(th);
    std::cout << *pf;
    delete pf;
    std::cout << std::endl;
    std::cin.get();
    return 0;
}
Изображения
Тип файла: png Безымянный.png (6.2 Кб, 12 просмотров)

Последний раз редактировалось BDA; 13.07.2022 в 23:07.
Darklight вне форума Ответить с цитированием
Старый 13.07.2022, 15:41   #14
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Ну так выводите - что мешает. Достаточно сохранять указатель на строку black или white вместо 0 или 1 в классе Figure.
Для букв просто прибавьте 'a' при выводе буквы.
Код:
os << 'a' + f.x_letter << ":" << f.y_number;

...

os << "coord: " << f.m_coord << ",color: " << ((f.m_color) ? "white" : "black") << std::endl;

Последний раз редактировалось macomics; 13.07.2022 в 15:47.
macomics вне форума Ответить с цитированием
Старый 13.07.2022, 16:04   #15
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

macomics, Вот такая вот штука выходит
Изображения
Тип файла: png Снимок.PNG (4.0 Кб, 9 просмотров)
Darklight вне форума Ответить с цитированием
Старый 13.07.2022, 16:11   #16
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
char a = 'a' + f.x_letter;
os << a << f.y_number;
или попробуйте наоборот написать
Код:
os << f.x_letter + 'a' << f.y_number;

Последний раз редактировалось macomics; 13.07.2022 в 16:14.
macomics вне форума Ответить с цитированием
Старый 13.07.2022, 16:13   #17
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

macomics, Спасибо =)
Darklight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо написать "таймер", который будет запускаться при нажатии кнопки "Start", приостанавливаться на "Pause", и сбрасываться на "Reset" billiejean78 JavaScript, Ajax 1 03.09.2021 08:58
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" link90 Общие вопросы C/C++ 2 27.03.2016 12:34
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40