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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2017, 18:41   #1
dima2308
Пользователь
 
Регистрация: 03.10.2014
Сообщений: 29
По умолчанию Реализовать программу с использованием шаблона

Требуется написать какую-либо более-менее полноценную программу, в которой используется шаблон проектирования.
Не понимаю, где и как его можно использовать.
К примеру, есть код игры крестики-нолики, можно ли куда-нибудь засунуть шаблон для выполнения определенной задачи? Или другое приложение использовать?
Сам в этом мало понимаю, поэтому прошу помочь.
Код:
#include <iostream>
#include <conio.h>


using namespace std;


class TicTac
{
private:
	char name1[30];
	char name2[30];
	char table[3][4];
	bool step;
public:
	void game()
	{
		instruction();
		cout << "\nFirst player: ";
		cin >> name1;
		cout << "Second player: ";
		cin >> name2;
		cout<<"\n";

		step = true;

		while ((win()!=true))
		{
		if (draw()==true) break;

		if (input()!=true)
		{
		cout << "Error! Write again!";
		_getch();
		}
	}

       if (draw()!=true)
        {
		if (step==true)
		cout << "Winner: " << name2 << endl;
		else
		cout << "Winner: " << name1 << endl;
		}
		else
		cout<< "Draw"<<endl;
		getch();
}

void instruction()
{
	int l = 0;
	for (int i = 0; i < 2; i++)
	{
	for (int j = 0; j < 3; j++)
	{
	cout << "| " << l + 1 << ' ';
	table[i][j] = char(49 + l);
	l++;
	}
	cout << '|';
	cout << endl;
	};
	l=6;
	for (int j = 0; j < 3; j++)
	{
	cout << "| " << l + 1 << ' ';
	table[2][j] = char(49 + l);
	l++;
	} cout << '|';
	cout << " " << 0 << ' ';
	table[2][3] =char(48);
	cout << '|';
}


bool input()
{
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << "| " << table[i][j] << ' ';
		}
		cout << '|';
		cout << endl;
	}

	for (int j = 0; j < 4; j++)
	{
		cout << "| " << table[2][j] << ' ';
	}

	cout << '|';
	cout << endl;

	if (step==true)
		cout << " Hodut " << name1 << " : ";
	else
		cout << " Hodut " << name2 << " : ";
	int n;
	cin >> n;

	if (n < 0 || n > 9)
		return false;
	int i, j;
	if (n == 0)
	{   i=2;
		j=3;
	}
	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==true)
{
	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
		if ((table[0][i] == table[1][i]) && (table[0][i] == table[2][i]))
	return true;
	else
		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])) ||
		   ((table[0][1] == table[1][2]) && (table[0][1] == table[2][3])) ||
		   ((table[2][1] == table[2][2]) && (table[2][1] == table[2][3])))
		return true;
return false;
}


bool draw()
{
        if (((table[0][0]=='X') || (table[0][0]=='O')) &&
            ((table[0][1]=='X') || (table[0][1]=='O')) &&
            ((table[0][2]=='X') || (table[0][2]=='O')) &&
            ((table[1][0]=='X') || (table[1][0]=='O')) &&
            ((table[1][1]=='X') || (table[1][1]=='O')) &&
            ((table[1][2]=='X') || (table[1][2]=='O')) &&
            ((table[2][0]=='X') || (table[2][0]=='O')) &&
            ((table[2][1]=='X') || (table[2][1]=='O')) &&
            ((table[2][2]=='X') || (table[2][2]=='O')) &&
            ((table[2][3]=='X') || (table[2][3]=='O')))
        return true;
        else return false;
}                 
};

int main()
{
     TicTac tc;
     tc.game();
     getch();
}
dima2308 вне форума Ответить с цитированием
Старый 18.05.2017, 19:07   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

В С++ у слова "шаблон" иное значение:
https://ru.wikipedia.org/wiki/%D0%A8...%D1%8B_C%2B%2B
alexzk вне форума Ответить с цитированием
Старый 18.05.2017, 19:10   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не иное. Автор про паттерн, а не template.

http://www.programmersforum.ru/showt...=4#post1668536
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.05.2017, 19:24   #4
dima2308
Пользователь
 
Регистрация: 03.10.2014
Сообщений: 29
По умолчанию

Да, речь идет именно о паттернах проектирования (строитель, стратегия и т.д).
dima2308 вне форума Ответить с цитированием
Старый 18.05.2017, 19:37   #5
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от dima2308 Посмотреть сообщение
Да, речь идет именно о паттернах проектирования (строитель, стратегия и т.д).
Тогда вы можете смело сказать - у вас тут паттерн"экстремальное программирование" - писали в 2 руки 2 человека вот и вышло )))
alexzk вне форума Ответить с цитированием
Старый 18.05.2017, 19:53   #6
dima2308
Пользователь
 
Регистрация: 03.10.2014
Сообщений: 29
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
Тогда вы можете смело сказать - у вас тут паттерн"экстремальное программирование" - писали в 2 руки 2 человека вот и вышло )))
шутки шутками, но надо что-то придумать...
dima2308 вне форума Ответить с цитированием
Старый 18.05.2017, 19:55   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык почитайте какие задачи решает какой паттерн и посмотрите было ли у вас такое в вашей программе.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать часы с использованием библиотеки GGI Имядляфорума Помощь студентам 0 16.05.2015 15:16
Помогите Реализовать программу математического типа с использованием ветвления или цикла Алексей95 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.05.2014 11:18
Реализовать очередь с использованием массива. mik123 Помощь студентам 0 13.12.2013 23:23
Реализовать базу данных с использованием компонента NaomoVal Помощь студентам 0 21.05.2012 18:07
Реализовать программу с использованием библиотеки GGI. rjj Помощь студентам 0 29.02.2012 01:45