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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
#1

Удаление повторяющихся точек - C++

18.12.2011, 16:10. Просмотров 504. Ответов 6
Метки нет (Все метки)

в общем, делаю курсовик, вот его задание:

"Даны N точек на плоскости. Для всех треугольников, образуемых любыми тремя точками, определить, является ли треугольник прямоугольным"

все работает и компилится, но надо удалить повторяющиеся точки.
ввод данных происходит из файла, где все элементы расположены в виде двумерного массива следующим образом:

0 0
1 8
1 0
2 8
0 2
2 2
0 0
1 0
1 1
0 0

вот, допустим, надо удалить повторяющиеся точки (0,0), чтобы повторных треугольников не было, да и чтобы при создании программой этих треугольников, не возникало их такого вида: (0,0)(1,8)(0,0)

вроде как понятен мой вопрос. всем заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2011, 16:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление повторяющихся точек (C++):

Удаление повторяющихся символов - C++
Есть строка символов, я её обрабатываю, удаляю слово с повторяющимися символами,дело в том что заодно удаляются и цифровые слова, 55 44 33...

Удаление повторяющихся символов - C++
Задача банальна. Удалить повторяющиеся символы в строке. В интернете шарил, предложенные варианты слишком сложные и непонятные. Язык си,...

Удаление повторяющихся символов - C++
из последовательности символов удалить самую большую из одинаковых элементов допустим есть строка aabbbbzcc, на выходе aazcc ...

Удаление повторяющихся чисел - C++
вот мой код vector<int> array; ifstream f("test.txt"); while (!f.eof()) { int tmp; f >> tmp; array.push_back(tmp); ...

Удаление повторяющихся символов из строки - C++
Необходимо написать функцию delete_repeats, которая удаляет все повторяюшиеся символы из строки. например: Only three more lessons...

Удаление из вектора повторяющихся элементов - C++
есть вектор vector<int> array; я считаю в него из файла, подскажите как мне удалить одинаковые цифры, то есть если есть 10 и 10 должно...

6
Виктор_Сен
33 / 26 / 1
Регистрация: 01.08.2011
Сообщений: 176
18.12.2011, 16:38 #2
Алгорим может быть примерно такой:
1. Сопоставить с каждой точкой флаг, который определяет, повторяющаяся точка или нет.
2. Установить все флаги в false
3. Цикл по этому массиву с первой по предпоследнюю точку
4. Внутри #3 цикла цикл по этому-же массиву начиная от следующей точки после текущей точки цикла #3 до последней точки массива
5. Если текущая точка цикла #3 совпадает с текущей точкой цикла #4, то пометить точку цикла #4 как повторяющуюся.
6. После завершения цикла #3 все повторяющиеся точки известны.
Алгоритм конечно можно оптимизировать, например в цикле #3 проверять точку, если она уже повторяющаяся, то сравнивать с ней нет смысла. В таком случае пропускать итерацию цикла #3.
1
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
18.12.2011, 17:21  [ТС] #3
Виктор_Сен, спасибо.буду осмыслять
интересно узнать есть ли способ попроще?
0
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.12.2011, 17:22 #4
Отсортировать, не?
1
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
18.12.2011, 17:24  [ТС] #5
можно спросить по-другому:
как удалить повторяющиеся стоки двумерного массива?

Добавлено через 28 секунд
soon, хорошая идея
спасибо
0
Петррр
5962 / 3399 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
18.12.2011, 18:06 #6
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
// Считывание точек из файла и удаление повторяющихся
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
struct point{
    double x, y;
    bool operator == (const point &right) {
        return this->x == right.x && this->y == right.y ? true : false;
    }
    bool operator != (const point &right) {
        return ! (*this == right);
    }
    friend ostream& operator << (ostream &out, const point &p) {
        out << "(" << p.x << ", " << p.y << ")";
        return out;
    }
    bool operator < (const point &right) const {
        if (this->x < right.x)
            return true;
        else
            if (this->x > right.x)
                return false;
        if (this->y < right.y)
            return true;
        return false;
    }
    bool operator > (const point &right) const{
        if (this->x > right.x)
            return true;
        else
            if (this->x < right.x)
                return false;
        if (this->y > right.y)
            return true;
        return false;
    }
};
 
int main() {
    vector<point> vec;
    ifstream points("D:\\points.txt");
    while (!points.eof()){
        point p;
        points >> p.x;
        points >> p.y;
        vec.push_back(p);
    }
    points.close();
    cout << "All points: " << endl;
    copy(vec.begin(), vec.end(), ostream_iterator<point>(cout, "\n"));
    cout << "+----------------------+" << endl;
    sort(vec.begin(), vec.end());
    vector<point>::iterator it = unique(vec.begin(), vec.end());
    vec.erase(it, vec.end());
    cout << "Unique points: " << endl;
    copy(vec.begin(), vec.end(), ostream_iterator<point>(cout, "\n"));
    return EXIT_SUCCESS;
}
1
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
18.12.2011, 18:21  [ТС] #7
Петррр, спасибо, конечно, большое, но боюсь, что мне не осилить такой большой объем новой информации. очень много в вашем коде того, чего я еще не изучал.
но, тем не менее, буду разбираться, спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2011, 18:21
Привет! Вот еще темы с ответами:

Удаление из строки повторяющихся символов - C++
Например Ввод: ABBGBAZ Вывод: ABGZ

Удаление повторяющихся значений в списке - C++
Добрый день. Нужна помощь в написании функции удаления повторяющихся элементов в списке. struct Adr { char name; char street; ...

Удаление повторяющихся элементов из списка - C++
Всем привет! Прошу помощи, надо написать функцию удаления всех повторяющихся элементов из списка. Например надо получить из a b g c d a b c...

Удаление повторяющихся символов массива - C++
Надо сделать так что бы повторяющиеся символы массива удалялись, а сам массив сдвигался.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
18.12.2011, 18:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru