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

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

Войти
Регистрация
Восстановить пароль
 
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
#1

Мультисет СТЛ - C++

27.04.2013, 01:56. Просмотров 1061. Ответов 4
Метки нет (Все метки)

Сегодня только начал разбираться с СТЛ) не все понимаю, выправите меня пожалуйста
на данный момент у меня есть два множества.
над множеством А нужно сделать 1) заменить символ - сделла, получилось, а вот.
2) удалить n символов начиная с к-той позиции..
один раз получилось сделать, но удаляло когда вводил 5 символов с 5той позиции, 2 с 2 и т.д
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
#include "stdafx.h"
#include <set>
#include <iostream>
#include <time.h>
//в структурі *p.name і тд ... 
//http://www.sgi.com/tech/stl/multiset.html
using namespace std;
 
const int N=26;
char a[N] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
char b[N] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
 
multiset<char> A;
multiset<char> B;
void print(multiset<char> x)
{
    multiset<char>::iterator p;
    p = x.begin();
    while (p!=x.end())
    {
        cout<<*p<<" ";
        p++;
    }
    cout<<endl;
}
 
void change(const char x)
{
    A.erase(x);
    int count = N-A.size();
    for(int i=1; i<=count; i++)
    {
        A.insert('Z');
    }
}
void clean_a(multiset<char> A,int n, int k){
    multiset<char>::iterator p;
 
    p = A.begin();
    for (int i=1;i<=k;i++) p++;
    for (int i=1;i<=n;i++) A.erase(p);
    
    while (p!=A.end())
    {
        cout<<*p<<" ";
        p++;
    }
    cout<<endl;
}
void main()
{
    srand(time(NULL));
 
    char x;
    for (int i=0; i<N; i++)
    {
        A.insert(a[rand()%N]);
    }
    for (int i=0; i<N; i++)
    {
        B.insert(b[rand()%N]);
    }
    cout << "Set A befor: ";
    print(A);
    cout<<"input char for delete:";
    cin>>x;
    change(x);
    cout << "Set A after change: ";
    print(A);
    /*cout<<endl<<"NEW SET B:";
    print(B);*/
    cout<<endl;
     int n(0),k(0);
    cout<<"Delele n elements from k position. Write K= ";cin>>k;cout<<" Write N= ";cin>>n;cout<<endl;
    if ((n>0)&&(n<N)){
        clean_a(A,n,k);
    }
    else 
        cout<<"Error"<<endl;
    system("pause");
}
Добавлено через 11 минут
досихпор сижу и не могу блин понять почему в цыкле не удаляет .. пытаюсь хотя б сделать так
C++
1
2
for (int i=0; i<3;i++)
{++p;A.erase(p);}
хотяб 3 елемента удалить, всеравно блин не удаляет, ошибка кидает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 01:56     Мультисет СТЛ
Посмотрите здесь:

СТЛ Вектор резинов? - C++
Я имею ввиду есть ограничения на количество значений которое он содержит? Когда писать . . . long long x; vector &lt;int&gt; vect; ...

Чтение дат СТЛ - C++
Здорова! Есть задачка: &quot;Существуют стандартные способы чтения, записи и представления дат под управлением класса locale. Прочитайте о...

Реализация кольцевого списка на СТЛ - C++
Добрый день! Появилось несколько вопросов в ходе выполнения задания. Само задание звучит так: Реализовать шаблон контейнерного класса...

Параметризованный класс и СТЛ(список) - C++
Есть задание: написать параметризованный класс, используя в качестве контейнера последовательный список. Вопрос: что такое...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2013, 02:22     Мультисет СТЛ #2
C++
1
2
3
4
5
6
7
8
9
10
void clean_a(multiset<char> A, int n, int k)
{
    multiset<char>::iterator p;
 
    p = A.begin();
    for (int i = 1; i <= k; i++) p++;
    for (int i = 1; i <= n; i++) p = A.erase(p);
    
    print(A);
}
stima
449 / 298 / 20
Регистрация: 22.03.2011
Сообщений: 966
Завершенные тесты: 2
27.04.2013, 02:22     Мультисет СТЛ #3
Вы удаляете у копии (строка 36). Почитайте про передачу в функцию по ссылке и значению.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2013, 02:42     Мультисет СТЛ #4
C++
1
2
3
4
5
6
if ((n > 0) && (n <= (N - k)) && k >= 0 && k < N)
{
        clean_a(A, n, k);
}
 else 
        cout << "Error" << endl;
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
27.04.2013, 12:19  [ТС]     Мультисет СТЛ #5
Спасибо за советы..где тыкнули носом, ну понял и исправил!
а вот етуже задачу нужно сделать с пользовательским типом, подскажите или покажите пож пример. я прочитал за эти типы нужно создать клас или структуру и подключить ее инклудом.. но что в ней нужно написать по отношению к етой задаче не пойму, практики в с ++ ну наверное 1 месяц+
Yandex
Объявления
27.04.2013, 12:19     Мультисет СТЛ
Ответ Создать тему
Опции темы

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