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

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

Войти
Регистрация
Восстановить пароль
 
Priorzivil
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 11
#1

Удалить каждое последующее вхождение символа если он встречался до этого - C++

11.03.2013, 18:07. Просмотров 243. Ответов 0
Метки нет (Все метки)

Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не сложно хотя бы по одной задачке буду очень благодарен

Задача 4 Списки

В файле input.txt содержатся символы создать из этих символов список. Удалить каждое последующее вхождение символа если он встречался до этого.
Input:
Код
= + - ) ( + ? _ - )
Код программы
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
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("input.txt");
ofstream out("output.txt");
class spisok // создаем класс spisok
{
private:
    struct elem
    {
        char inf; 
        elem *next;
        elem (char x,elem *p):inf(x), next(p){}
    };
    elem *head, *tail;
public:
    spisok():head(0),tail(0){};
    bool empty()
    {
        return head==0;
    }
    void push_head(char value)
    {
        head=new elem(value, head);
    }
    void push_tail(char value)
    {
        elem *newptr=new elem(value, 0);
        if(head==0&&tail==0)
            head=tail=newptr;
        else
        {
            tail->next=newptr;
            tail=newptr;
        }
    }
            
    void print()
    {
        if(head!=0)
        {
 
            elem *r=head;
            while(r!=NULL)
            {
                out<<r->inf<<' ';
                r=r->next;
            }
        }
        else out<<"empty spisok"<<endl;
    }
    void findRemove(char i,elem *t)
    {
        elem *r=t;
        while(r->next!=NULL)
        {
            if((r->next)->inf==i)
                remove(r);
            else r=r->next;
        }
    }
    void remove (elem *&r)
    {
        elem *t=r->next;
        r->next=r->next->next;
        delete t;
 
    }
    void removeAll()
    {
        //out<<head->inf<<endl;
        //out<<head->next->inf<<endl;
        //out<<head->next<<endl;
        //out<<head->next->next<<endl;
        for(elem *t=head; t!=NULL; t=t->next)
        {
            //out<<"*";
            findRemove(t->inf,t);
        }
    }
};
 
int main()
{
    spisok t;
    char n;
    while(in>>n)
    {
        t.push_tail(n);
    }
    out<<"Spisok:"<<endl;
    t.print();
    t.removeAll();
    out<<endl;
    out<<"Spisok s udaleniem"<<endl;
    t.print();
    in.close();
    out.close();
    system("pause");
    return 0;
}
output
Код
Spisok:
= + - ) ( + ? _ - ) 
Spisok s udaleniem
= + - ) ( ? _
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 18:07     Удалить каждое последующее вхождение символа если он встречался до этого
Посмотрите здесь:
Удвоить каждое вхождение символа C в строку S C++
Удвоить каждое вхождение символа в строке C++
Удвоить каждое вхождение символа С в строку S C++
C++ Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S
C++ Заменить каждое вхождение <i> на <курсив>, а каждое вхождение </i> на <конец курсивах>
C++ Удалить из строки каждое вхождение подстроки
Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа C++
C++ Из файла ввести слово и найти в нём последнее вхождение заданного символа, если он есть
В предложении удалить первое вхождение “w”, если такое есть C++
C++ Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
C++ Ввести строку символов, если ее длина четная, удалить 2 первых и 2 последних символа.
C++ Заменить в тексте каждое вхождение...

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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