// Доп.задачи 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;
}
               (
geocities.com/msimuni)