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

Удаление одинаковы строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Многомерные массивы (матрицы) http://www.cyberforum.ru/cpp-beginners/thread1010315.html
Не могу понять как написать код. Если не сложно напишите подробнее цикл. Вот начало. srand(time(NULL)); const int SIZE = 7; int A; int sum = 0; for (int y=0; y<SIZE; y++)
C++ Огромная степень числа Здравствуйте. Есть необходимость посчитать огромную степень числа, если конкретно, то 22050. Есть ли тип данных (если я не ошибаюсь, оно так называется. Вот примеры того что я имею в виду: int, char), который сможет хранить такое большое значение? И вообще, реально ли посчитать это число? http://www.cyberforum.ru/cpp-beginners/thread1010313.html
C++ Бинарное дерево
Всем доброго времени суток! Задача такая: Реализовать бинарное дерево в программе предусматривающей следующие функции: добавление узла, удаление узла, обход. Предусмотреть начальную генерацию дерева. Тип ключа - int. Удаляемый узел заменяется самым правым дочерним. Обход обратный. Реализация бинарного дерева возможно способами: 1) Связный список дочерних узлов 2) С помощью указателей 3)...
C++ Векторизация кода
Задание: Написать программу с ручной векторизацией (выбрать любой вариант из возможных трех: ассемблерная вставка, встроенные функции компилятора, расширение GCC), вот код(высчитывает обратную матрицу): #include <iostream> #include <stdio.h> #include <time.h> #include <stdlib.h> #include <ctime> #include <sys/times.h> // for times
C++ Натуральный корень для кубического уравнения http://www.cyberforum.ru/cpp-beginners/thread1010295.html
#include <iostream> #include <math.h> using namespace std; int main(){ float a,b,c,d,res1,res2,x,y,del,i; //ax^3+bx^2+cx+d=0 cout << "Enter a: "; cin >> a;
C++ Блок-схемы для программ на разветвляющийся алгоритм №1 // Laboratornaa.cpp: определяет точку входа для консольного приложения. // #include"stdafx.h" #include<iostream> #include<math.h> using namespace std; int _tmain(int argc, _TCHAR* argv) { подробнее

Показать сообщение отдельно
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
17.11.2013, 19:43     Удаление одинаковы строк
Допустим у меня есть строка s и я хочу удалить одинаковые подстроки в ней.
Сначала я извлекаю подстроки до символа '\n' из s с помощью функции read_line. При первом вызове этой функции я получу subs = "Hello world\n" ну и т. д.
В цикле while сначала игнорирую оригинальную подстроку. С помощью "it + subs.size()" перепрыгиваю оригинальную подстроку и далее ищу её копию или копии, если такие будут. Ну и удаляю её.
Но у меня ошибка, которая говорит, что итератор смещается за пределы диапазона!

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
#include <iostream>   
#include <algorithm>    
#include <string>
 
bool read_line(const std::string& str, std::string& substr);
 
int main() 
{
    std::string s = "Hello world\nI live in UA\nHello world\nI like football\nHello world\n";
    std::string::iterator it;
    std::string subs = "";
 
    while(read_line(s, subs))
    {
        it = std::search(s.begin(), s.end(), subs.begin(), subs.end());                 // ignore original string
        it = std::search(it + subs.size(), s.end(), subs.begin(), subs.end());      // find copy subs in s
 
        while(it != s.end())
        {
            s.erase(it, it + subs.size());
    
            it = std::search(it + subs.size(), s.end(), subs.begin(), subs.end()); // find another copy subs in s
        }
    }
    std::cout << std::endl << s << std::endl;
 
    return 0;
}
 
bool read_line(const std::string& str, std::string& substr)
{
    static unsigned i = 0;
 
    if(i == str.size())
        return false;
    else
    {
        substr.clear();
 
        while(str[i] != '\n')
            substr += str[i++];
 
        substr += '\n';
        ++i;
    }
    
    return true;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru