// Доп.задачи 4
//

#include "stdafx.h"
#include 
#include 
#include 
#include 
using namespace std;

// Задача 2

class rational {
	int num, den;
public:
	rational(int num_ = 0, int den_ = 1) :
		num(num_), den(den_)
	{}
	friend ostream& operator<<(ostream& output, const rational& r); 
};

ostream& operator<<(ostream& output, const rational& r) 
{
	output << r.num;
	if (r.den != 1)
		output << "/" << r.den;
	return output;
}

// Задача 4

bool check_same1(const list& l)
{
	list::const_iterator p,q;
	for (p = l.begin(); p != l.end(); p++) {
		for (q = p, q++; q != l.end(); q++) {
			if (*p == *q)
				return true;
		}
	}
	return false;
}

// Задача 5

bool check_same2(const list& l)
{
	set s;

	list::const_iterator p;
	for (p = l.begin(); p != l.end(); p++) {
		if (s.find(*p) != s.end()) // Число уже было?
			return true;
		s.insert(*p);
	}
	return false;
}

// Задача 6

class queue {
	deque d;
public:
	void push(int x)
	{
		d.push_back(x);
	}

	int pop()
	{
		int result = *d.begin(); // Или int result = d.front();
		d.pop_front();
		return result;
	}
};

int main() {
	// Пример вызова для задачи 2
	rational r1(2, 3);
	rational r2(7, 1);
	cout << r1 << " " << r2 << "\n";

	// Примеры вызова для задач 4 и 5
	list lst;
	lst.push_back(3);
	lst.push_back(7);
	lst.push_back(11);
	lst.push_back(7);

	cout << check_same1(lst) << "\n";
	cout << check_same2(lst) << "\n";

	// Пример вызова для задачи 6
	queue q;
	q.push(3);
	q.push(7);
	q.push(11);
	cout << q.pop() << "\n";
	cout << q.pop() << "\n";

	return 0;
}

    Source: geocities.com/msimuni/cpp

               ( geocities.com/msimuni)