Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Подсчет через count_if - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввести размерность матрицы с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread366540.html
Задача: создать массив N*M, (ввод размерности с клавиатуры) и вывести его на экран. Написала код, но где-то видимо туплю, помогите, пожалуйста.:-#include <iostream> using namespace std; int main()...
C++ Написать программу. Строка, состоящая из символов... Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255... http://www.cyberforum.ru/cpp-beginners/thread366531.html
C++ Скопировать элементы большие числа а в другой динамически созданный массив
Организовать ввод динамического массива размером N. Скопировать элементы большие числа а(а вводится пользователем) в другой динамически созданный массив. Главное чтобы это было все с...
Итератор C++
#include <iostream> #include <list> using namespace std; list<int>::iterator pos (list<int> a,list<int>::iterator it) { for (it; it != a.end(); it++) { if (*it == 5) { break;
C++ Просмотр значений переменных http://www.cyberforum.ru/cpp-beginners/thread366525.html
Пожскажите, как в Visual Studio 2010 открыть watches: окно, где показываются значения переменных на данном шаге.
C++ html "браузер" Конечно назвать это браузером, как в воду...:) Суть задачи такова: Вводим текст с html тегами, а на выходи получаем тот же текст, только с выполненными тегами. Накидал вот такое: (<br> -... подробнее

Показать сообщение отдельно
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.10.2011, 08:41
Тут проще через лямбды сделать
Примерно так(в коде много лишнего, суть в 92-95 строках)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
 
const double EPS = 0.00001;
 
struct point
{
    double x, y;
    explicit point( double _x, double _y )
    {
        x = _x;
        y = _y;
    }
    
    point() { }
    
};
 
class triangle
{
    point a, b, c;
 
public:
    
    explicit triangle( const point& _a, const point& _b, const point& _c)
    {
        a = _a;
        b = _b;
        c = _c;
    }
    
    triangle() { }
 
    bool include( const point& x ) const;
    
    double square() const;
    
    friend std::istream& operator >> ( std::istream& stream, triangle& t );
};
 
class rectangle
{
    point a, b, c, d;
    
public:
    
    explicit rectangle( const point& _a, const point& _b, const point& _c, const point& _d )
    {
        a = _a;
        b = _b;
        c = _c;
        d = _d;
    }
    
    bool include( const point& x ) const;
    
    friend std::istream& operator >> ( std::istream&, rectangle& p );
};
 
std::istream& operator >> ( std::istream& stream, point& p )
{
    stream >> p.x >> p.y;
    return stream;
}
 
std::istream& operator >> ( std::istream& stream, rectangle& r )
{
    stream >> r.a >> r.b >> r.c >> r.d;
    return stream;
}
 
std::istream& operator >> ( std::istream& stream, triangle& t )
{
    stream >> t.a >> t.b >> t.c;
    return stream;
}
 
int main()
{
    rectangle r( point(0, 0), point(2, 0), point(2, 2), point(0, 2) );
    
    std::vector < point > points = { point( 1, 1 ), point(3, 3), point(0, 0) };
    
    std::cout << std::count_if( points.begin(), points.end(), [&r] ( const point& p ) -> bool
    {
        return r.include(p);
    } );
}
 
 
 
double triangle::square() const
{
    return fabs( ( a.x * (b.y - c.y) + b.x * (c.y - a.y ) + c.x * (a.y - b.y ) ) / 2. );
}
 
bool triangle::include( const point& pt ) const
{
    return fabs( square()
        - triangle(a, b, pt).square()
        - triangle(b, c, pt).square()
        - triangle(c, a, pt).square() ) < EPS;
}
 
bool rectangle::include( const point& x ) const
{
    return triangle(a, b, c).include(x) || triangle(a, d, c).include(x);    
}
Результат: http://liveworkspace.org/code/2ae297...dbc4b72a4556bc
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru