Подорожуй з gofrie.com

Пошук Оптимального рішення в антагоністичних іграх.

До антагоністичних ігор належать такі гри де якщо один з гравців виграє, то інший точно програє. В таких випадках можливо знайти оптимальний хід в будь-якій ситуації проаналізувавши всі можливі надалі позиції.

Одним з таких алгоритмів є MIN-MAX пошук. Він так називажться оскількі він вважає що один гравець — MAX, намагається максимізувати свою корисність, а інший — MIN, мінімізувати корисність MAX. Цей алгоритм є найпростішим, оскільки він просто перебирає всі можливі варіанти і обирає найкращий в данному випадку.

Існують покращення цього алгоритму, принаймі Alpha-Beta Pruning. Але всі варіанти його не є еффективними в практиці, оскількі програма яка знаходить оптимальний хід за великий час не може еффективно використовуватися в якості гравця. Тому взагалі цей метод використовують тількі для останніх позицій кожної партії, а у інший час використовують якусь евристику.

Варіант розв'язку іспиту з ООП (2012-2013)

Варіант розв'язку іспиту з об'єктно-орієнтованого програмування (2011-2012)
Завантажити

Задача: Обчислення арифметико-геометричного середнього

Арифметико-геометричного середнім M(a,b) двох дійсних чисел 0<a<b. M(a,b) називається спільна границя двох послідовностей, з яких одна монотонно зростає, а інша — монотонно спадає:



де послідовності задані рекурентними співвідношеннями:



Обчислити M(a,b) з максимально можливою точністю.

Задача: Обчислення iнтегралу Гауса

Запрограмуйте функцію обчислення інтегралу Гауса за розкладом у ряд

\int_{0}^{x}e^{-t^{2}}dt = x-\frac{x^{3}}{3*1!} + \frac{x^{5}}{5*2!}-\frac{x^{7}}{7*3!}...

Задача: Обчислення елементарних функцiй

Реалізувати власні функції обчислення елементарних функцiй MySin, MyCos, MyExp, MyLn

Задача: Клас Time

Реалізувати клас Time за наведеною нижче специфікацією.

Увага! Час має нормалізуватися при створенні об'єкта.
Наприклад Time a(8, 75, 210) після створення має мати атрибути Hours = 9, Minutes= 18, Seconds == 30

Зразки виводу:
1) Для Time(1,1,1) — 01:01:01
2) Для Time(23,59,59) — 23:59:59

#include <exception>
#include <iostream>
using namespace std;

class Time
{
public:
	struct BadTime;
	typedef int Hours;
	typedef int Minutes;
	typedef int Seconds;
	
	Time (const Hours& h, const Minutes& m, const Seconds& s);
	Time (const Seconds &s=0);
	Time (const Time&);
	~Time(){};
	Time& operator=(const Time&);
	
	operator int() const;

	const double ToHours() const;
	const int ToSeconds() const;

	// Selectors
	const Hours& getHours() const;
	const Minutes& getMinutes() const;
	const Seconds& getSeconds() const;

	// Modifiers
	void setHours(const Hours&);
	void setMinutes(const Minutes&);
	void setSeconds(const Seconds&);

	const Time& operator++();
	const Time operator++(int);
	const Time& operator--();
	const Time operator--(int);

private:
	// Mutable attributes in order to allow normalizing in const objects
	mutable Hours _hours;
	mutable Minutes _minutes;
	mutable Seconds _seconds;

	void normalizeTime() const;
};

Time& operator+=(Time&, const Time&);
const Time operator+(const Time&, const Time&);

const bool operator==(const Time&, const Time&);
const bool operator!=(const Time&, const Time&);
const bool operator>(const Time&, const Time&);
const bool operator<(const Time&, const Time&);
const bool operator>=(const Time&, const Time&);
const bool operator<=(const Time&, const Time&);

ostream& operator<<(ostream&, const Time&);

struct Time::BadTime
{
	Time::Hours _hours;
	Time::Minutes _minutes;
	Time::Seconds _seconds;
};

Особливості використання мультимедійних технологій для розробки навчальних матеріалів в системах електронної освіти

Кваліфікаційна робота на тему: “Особливості використання мультимедійних технологій для розробки навчальних матеріалів в системах електронної освіти”

Завантажити
Автор: Мірошина Марія

Створення інтерактивних навчальних матеріалів з об'єктно-орієнтованого програмування

Кваліфікаційна робота на тему: “Створення інтерактивних навчальних матеріалів з об'єктно-орієнтованого програмування”

Завантажити
Автор: Івченко Дмитро

Особливості розробки електронних порталів для підтримки навчання осіб з обмеженими можливостями

Кваліфікаційна робота на тему: “Особливості розробки електронних порталів для підтримки навчання осіб з обмеженими можливостями”

Завантажити
Автор: Гайдучек Іван

Electronic Portfolio development in e-Learning systems

Кваліфікаційна робота на тему: “Electronic Portfolio development in e-Learning systems”

Завантажити
Автор: Yuliya Bozhko

Методи і засоби підтримки автоматизованих практикумів з об'єктно-орієнтованого програмування

Кваліфікаційна робота на тему: “Методи і засоби підтримки автоматизованих практикумів з об'єктно-орієнтованого програмування”

Завантажити
Автор: Болгар Ліанна Едуардівна

Задача: Комплексні числа (алгебраїчна і тригометрична форми)

Реалізувати два варіанти класу комплексних чисел за доданими специфікаціями:
УВАГА! Період тригонометричних чисел має округлюватися до 2*PI

#include <iostream>
#include <cmath>
using namespace std;

const double PI = 3.141592653589793238462643383279;

class AComplex;
class TComplex
{
private:
	double _ro, _phi;
	// Зведення по модулю 2PI
	void normalizePhi();

public:
	TComplex (const double& ro=0, const double& phi=0);
	TComplex (const TComplex&);
	TComplex (const AComplex&);
	~TComplex();

	TComplex& operator= (const TComplex&);

	double& mod();
	double& arg();

	const double& mod() const;
	const double& arg() const;

	const double re() const;
	const double im() const;
};

TComplex& operator+=(TComplex&, const TComplex&);
TComplex& operator-=(TComplex&, const TComplex&);
TComplex& operator*=(TComplex&, const TComplex&);
TComplex& operator/=(TComplex&, const TComplex&);

const TComplex operator* (const TComplex&, const TComplex&);
const TComplex operator/ (const TComplex&, const TComplex&);

class TComplex;
class AComplex
{
private:
	double _re, _im;

public:
	AComplex (const double& re=0, const double& im=0);
	AComplex (const TComplex&);
	AComplex (const AComplex&);
	~AComplex();

	AComplex& operator= (const AComplex&);

	double& re();
	double& im();

	const double& re(void) const;
	const double& im(void) const;

	const double mod() const;
	const double arg() const;

	// Спряжене до комплексного числа
	const AComplex conj() const;
};

AComplex& operator+=(AComplex&, const AComplex&);
AComplex& operator-=(AComplex&, const AComplex&);
AComplex& operator*=(AComplex&, const AComplex&);
AComplex& operator/=(AComplex&, const AComplex&);

const bool operator==(const AComplex &, const AComplex &);
const bool operator!=(const AComplex &, const AComplex &);

const AComplex operator+ (const AComplex&, const AComplex&);
const AComplex operator- (const AComplex&, const AComplex&);

Задача: Трикутники

Реалізувати клас трикутників за зразком сигнатури:

Вивід трикутників ABC у вигляді (1;2)(1;2)(3;5), де A, B, C — відповідні точки.

#include <iostream>
using namespace std;

class Point
{
private:
	double _x;
	double _y;

public:
	Point (const double &x = 0, const double &y = 0);
	Point (const Point &);
	~Point();
	Point &operator=(const Point &);
	double &x();
	double &y();
	const double &x()const;
	const double &y()const;
	const double distance(const Point &p) const;
};

ostream &operator<<(ostream&, const Point &);
const Point operator+ (const Point &, const Point &);
Point &operator+=(Point &, const Point &);
const Point operator- (const Point &, const Point &);
Point &operator-=(Point &, const Point &);
const bool operator==(const Point &, const Point &);
const bool operator!=(const Point &, const Point &);

class Triangle
{
public:
	// Segment of triangle
	class Segment 
	{
	private:
		// Assignment is forbidden in this implementation
		Segment &operator=(const Segment &);
		const Point &_a;
		const Point &_b;

	public:
		Segment(const Point &start, const Point &end);
		Segment(const Segment &);
		~Segment();

		const Point &start() const;
		const Point &end() const;

		const double length() const;
                // Найближча відстань від точки до відрізка
		const Point nearest(const Point &) const;
	};

	Triangle(const double &x1=0, const double &y1=0,
	         const double &x2=1, const double &y2=0,
		 const double &x3=0, const double &y3=1);
	Triangle(const Point &a, const Point &b, const Point &c);
	Triangle(const Point &a, const Segment &side);
	Triangle (const Triangle &);
	~Triangle();
	Triangle &operator=(const Triangle &);

	const double perimeter() const;
	const double area() const;

	const Point &apexA() const;
	const Point &apexB() const;
	const Point &apexC() const;

	const Segment &side_a() const;
	const Segment &side_b() const;
	const Segment &side_c() const;

	const double length_a() const;
	const double length_b() const;
	const double length_c() const;

	const Segment &height_a() const;
	const Segment &height_b() const;
	const Segment &height_c() const;

private:
        Point _a, _b, _c;
};

Задача: Загорнутий вектор, пошук за ключем

Загорнутий вектор v, складений із записів довільного невідомого наперед типу. Записи містять в собі числові ключі. Визначте структури та запрограмуйте функцію пошуку запису із заданим значенням ключа a.

Вивід має бути наступним:
1) Якщо елемент був знайдений (за ключем лежить число 5) 1:5, де 1 — це результат пошуку бульової функції find
2) Якщо елемент не було знайдено, то має виводитися тільки результат пошуку бульової функції find — 0

David Abrahams, Aleksey Gurtovoy. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond



«C++ Template Metaprogramming» sheds light on the most powerful idioms of today's C++, at long last delivering practical metaprogramming tools and techniques into the hands of the everyday programmer.
Since the introduction of templates, C++ programmers have discovered surprising and powerful ways to perform computation at compile-time. While the excitement generated by these capabilities among C++ experts has reached the community at large, their practical application remains out-of-reach for many programmers. Literature on C++ template metaprogramming has focused primarily on details of low-level «tricks» at the expense of strong idioms and abstractions, and without illuminating the path from metaprogramming to expressive interfaces and efficient, maintainable software.

This book delivers both «big picture» ideas and practical tools. It explains what metaprogramming is, why it matters, and how the unique combination of features in C++ make it an especially powerful language for metaprogramming. It also presents the Boost Metaprogramming Library, a powerful open source framework of high-level compile-time components based on familiar STL idioms, which makes C++ metaprogramming easy, expressive, and fun.