Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

11.03.2013, 18:07. Просмотров 251. Ответов 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
= + - ) ( ? _
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 18:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить каждое последующее вхождение символа если он встречался до этого (C++):

Удвоить каждое вхождение символа C в строку S - C++
Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S. Помогите плиз написать программу с помощью функций.

Удвоить каждое вхождение символа в строке - C++
Дана строка s и c символ . Удвойте каждое вхождение символа c в строке s подскажите пожалуйста как решить. Добавлено через 10 минут ...

Удвоить каждое вхождение символа С в строку S - C++
Дана строка S и символ С. Удвоить каждое вхождение символа С в строку S.

Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S - C++
Обработка символьных массивов с помощью указателей: Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S Для...

Заменить каждое вхождение <i> на <курсив>, а каждое вхождение </i> на <конец курсивах> - C++
Тэг курсива. Дан текст, в котором встречаются структуры &lt;i&gt; и &lt;/i&gt;. Заменить каждое вхождение &lt;i&gt; на &lt;курсив&gt;, а каждое вхождение &lt;/i&gt;...

Удалить из строки каждое вхождение подстроки - C++
Удалить из строки s каждое вхождение подстроки s1. На С++ Дублирование тем запрещено правилами форума (п. 3.4). Не плодите...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 18:07
Привет! Вот еще темы с ответами:

Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа - C++
Добрый вечер. Ответ искал, но не нашёл. Предположим, есть строка: ABC|DEF Надо скопировать всё до | , т.е., в приведённом...

Из файла ввести слово и найти в нём последнее вхождение заданного символа, если он есть - C++
Из файла ввести слово и найти в нём последнее вхождение заданного символа, если он есть. Выдать соответствующее текстовое сообщение и...

В предложении удалить первое вхождение “w”, если такое есть - C++
Как можно выполнить это задание с помощью строк?? В предложении удалить первое вхождение “w”, если такое есть. Образовавшуюся “дыру”...

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке - C++
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа “р” в строке и вывести строку, начиная с...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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