С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
51 / 3 / 1
Регистрация: 02.06.2013
Сообщений: 162
Записей в блоге: 2
1

Работа с STL <list>

20.05.2017, 19:36. Показов 2009. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем, есть текст, программа выделяет в тексте последовательность введённую с клавиатуры(выделяет скобками {}) Например выделить последовательность "рош" - будет П{рош}у. Текст нужно из файла записать в контейнер list, в нём же изменять текст, из него же вывести результат текста на экран. в общем я написал, всё кроме главного, алгоритма замены. Не могу понять как его реализовать...
Прошу помощи, уже не знаю что делать...
Вот код:
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
#include<fstream>
#include<iterator>
#include<iostream>
#include<list>
#include<string>
using namespace std;
string read(string filename)
{
    char chr;
    string str;
    ifstream fin(filename.c_str());
    while(fin.get(chr))
    {
        str+=chr;
    }
    return str;
}
int main()
{
    char o='[',c=']';
    setlocale(0,"");
    int i=0;
    string str=read("file1.txt");
    string str2;
    list<char> text;
    list<char>::iterator it=text.begin();
    list<char>::iterator it=text.begin();
    cout<<"Какую последовательность выделить?"<<endl;
    cin>>str2;
 
    while(i<str.length())
    {
        text.push_back(str[i]);
        i++;
    }
        //тут я пытался написать какой нибудь алгоритм, что бы я не пытался
        //все с ошибками.
 
    it=text.begin();
    while(it!=text.end()) //должен быть результат, но пока что выводится не изменённый текст
    {
        cout<<*it;
        it++;
    }
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2017, 19:36
Ответы с готовыми решениями:

Работа с STL list + пропись List.h
Здравствуйте! Помогите, пожалуйста, разобраться с STL list. Нужно сделать программу в которой...

Работа с STL list
Есть некий каталог с 3 переменными (string,string,int), который нужно хранить в list Как я...

Работа с STL. Поменять vector на list
Программа должна быть написана так, чтобы достаточно было заменить в одном месте vector на list и...

Работа с двунаправленым списком. STL <list>
Помогите пожалуста найти ошибку.. 3) Даны натуральное число n, действительные числа x1,x2,....,xn...

5
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
20.05.2017, 20:14 2
http://www.cplusplus.com/refer... g/replace/ ?
? http://stackoverflow.com/quest... -in-string
0
51 / 3 / 1
Регистрация: 02.06.2013
Сообщений: 162
Записей в блоге: 2
20.05.2017, 20:49  [ТС] 3
Цитата Сообщение от dailydose Посмотреть сообщение
http://www.cplusplus.com/reference/s...tring/replace/ ?
? http://stackoverflow.com/quest... -in-string
тут стринг, в листе надо..
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.05.2017, 23:11 4
Лучший ответ Сообщение было отмечено Dreeni как решение

Решение

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
#include <iostream>
#include <list>
using namespace std;
 
template< typename T>
void show_container( T it_start, T it_end ){
while(it_start != it_end) cout << *it_start++  ;
cout<<endl;
}
 
void 
select_text(             
            list<char>& list_chars, 
            const char *text_to_sel, 
            const char sel_symb_first,
            const char sel_symb_second
            ){
 list<char>::const_iterator current_it = list_chars.begin(), end_it = list_chars.end();
 bool enter_the_word_candidate=false;
list<char>::const_iterator start_symb_it, end_symb_it;
size_t pos_the_word_candidate, len_text = strlen(text_to_sel);
 
while(current_it != end_it){
    if(!enter_the_word_candidate && *current_it == text_to_sel[0]){
enter_the_word_candidate=true;
pos_the_word_candidate=0;
start_symb_it = current_it;
    }
    if(enter_the_word_candidate && *current_it == text_to_sel[pos_the_word_candidate]){
        if(pos_the_word_candidate == len_text-1){
end_symb_it = current_it;
++end_symb_it;
list_chars.insert(start_symb_it, sel_symb_first);
list_chars.insert(end_symb_it, sel_symb_second);
enter_the_word_candidate=false;
        }
pos_the_word_candidate++;
    }else {
enter_the_word_candidate=false;
    }
current_it++;
}
 
}
 
 
int main(int argc, char* argv[])
{
char source_chars[]=
"The standard string (massaraksh) class provides support for such objects\
(massaraksh) with an interface (massaraksh)\
similar to that of a standard container (massaraksh)\
of bytes (massaraksh)\
, but adding features (massaraksh)\
specifically designed to operate with strings (massaraksh)\
of single-byte characters (massaraksh)";    
size_t len=strlen(source_chars);
list<char> list_chars(source_chars, source_chars+len);
show_container(list_chars.begin(), list_chars.end());
const char *text_to_select="assara";
select_text(list_chars, text_to_select, '{','}');
show_container(list_chars.begin(), list_chars.end());
cout<< endl;
system("pause");
return 0;
}
1
51 / 3 / 1
Регистрация: 02.06.2013
Сообщений: 162
Записей в блоге: 2
21.05.2017, 00:18  [ТС] 5
Цитата Сообщение от IGPIGP Посмотреть сообщение
const char *text_to_select="assara";
Здорово, спасибо большое. А как можно сделать так чтобы значение text_to_select вводилось с клавиатуры?
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.05.2017, 00:26 6
Dreeni, объявите text_to_select как массив (размером 80 например) и без const. Или как строку. Потом запросите ввод и введите. Если будете строку использовать (string) включите хедер и при вызове достаньте строку функцией c_str(). А вообще, если это проблема, то зачем вам такая задача?
0
21.05.2017, 00:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2017, 00:26
Помогаю со студенческими работами здесь

STL List
Вот в чем проблема, была дана задача, решить которую надо было с помощью Deque и List, Deque...

STL list
как вставить элемент в середину списка list STL? float list_insert_rand(int num) { srand...

List STL
В общем нужно создать класс STL c помощью list: CStudent.h #include &lt;string&gt; using namespace...

STL list
Доброго времени суток, пока имею поверхностное представление о алгоритмах STL и функциях для...


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

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