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

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

Восстановить пароль Регистрация
 
Priorzivil
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 11
11.03.2013, 18:07     Удалить каждое последующее вхождение символа если он встречался до этого #1
Народ меня тут 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++ Из файла ввести слово и найти в нём последнее вхождение заданного символа, если он есть
C++ Удалить из строки каждое вхождение подстроки
C++ Ввести строку символов, если ее длина четная, удалить 2 первых и 2 последних символа.
Удвоить каждое вхождение символа С в строку S C++
Удвоить каждое вхождение символа в строке C++
В предложении удалить первое вхождение “w”, если такое есть C++
C++ Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
C++ Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S

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

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

Текущее время: 21:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru