С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
1

Сравнение строк в векторе и удаление их повторений

07.10.2014, 21:21. Показов 2336. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ошибка компиляции в строках с erase().
Прога считывает n строк, сравнивает их все. Если строки одинаковые — он выводит ее и удаляет все последующие совпадения.
Поправьте, пожалуйста.


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
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    int n;
    cin >> n;
    vector<string> s(n);
    for (int i = 0; i < n; i++)
        cin >> s[i];
 
    for (int i = 0; i < s.size(); i++)
        for (int j = i + 1; j < s.size(); j++)
            if (s[i] == s[j]) {
                cout << s[i] << endl;
                for (int l = j; l < s.size(); l++)
                    if (s[i] == s[l])
                        s.erase(&s[l]);
                s.erase(&s[i]);
            }
    return 0;
}
Добавлено через 4 минуты
Поправочка, не учел, что при erase смещаются все указатели, я ведь правильно понимаю?
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
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    int n;
    cin >> n;
    vector<string> s(n);
    for (int i = 0; i < n; i++)
        cin >> s[i];
 
    for (int i = 0; i < s.size(); i++)
        for (int j = i + 1; j < s.size(); j++)
            if (s[i] == s[j]) {
                cout << s[i] << endl;
                int l = j;
                while (l < s.size()) {
                    if (s[i] == s[l])
                        s.erase(&s[l]);
                    else
                        l++;
                }
                s.erase(&s[i]);
            }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2014, 21:21
Ответы с готовыми решениями:

Преобразовать заданные строки, согласно условию (сортировка и сравнение строк, вставка/удаление символов)
Даны строки A и B. Если все символы A входят в B и в B есть повторяющиеся символы, то упорядочить...

Сравнение элементов в векторе
Подскажите как проверить на равенство поля объектов в векторе: Делаю так: #include &lt;iostream&gt;...

Сравнение векторов и замена слов в векторе
Вводим n-е количество слов в векторе str. Имеется второй вектор dislike с определенными словами....

Перемещение и удаление элементов в векторе
Eсть такой код: vector&lt;int&gt; v = {-3, -5, -6, 1, 2, 3}; for (size_t i = 0; i != v.size(); i++)...

1
73 / 59 / 41
Регистрация: 25.06.2014
Сообщений: 360
07.10.2014, 22:45 2
желательно конечно побольше подробностей по самой проге, но мб так
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
#include <iostream>
#include <vector>
#include <string>
using namespace std;
 
int main()
{
    int n;
    cin >> n;
    vector<string> s(n);
    for (int i = 0; i < n; i++)
        cin >> s[i];
 
    for (int i = 0; i < s.size(); i++)
        for (int j = i + 1; j < s.size(); j++)
            if (s[i] == s[j]) {
        cout << s[i] << endl;
        int l = j;
        while (l < s.size()) {
            if (s[i] == s[l])
                //s.erase(&s[l]);
                s.erase(s.begin()+l);
            else
                l++;
        }
        s.erase(s.begin() + i);
            }
    return 0;
}
1
07.10.2014, 22:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2014, 22:45
Помогаю со студенческими работами здесь

Удаление повторяющихся элементов в векторе
Нужно перегрузить унарный оператор ~ что бы он удалял повторяющиеся элементы в векторе vector&amp; ...

Сравнение и удаление одинаковых строк
Сравнить и удалить похожие строки. for I := 0 to Base3.Count-1 do begin if form2.sMemo5.Lines...

StringGrid: сравнение и удаление строк
Добрый день. Гружу в stringGrid данные. Создано 6 колонок. Первая строка (FixedRows) название...

ComboBox, сравнение и удаление строк
Здравствуйте, помогите пожалуйста, подскажите как можно произвести сравнение всех строк combobox...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru