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

stl, удаление элементов в list - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
BeRS777
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 9
06.12.2012, 18:51     stl, удаление элементов в list #1
Всем доброго времени суток!
прошу помочь в решении задачи:
Из числовой последовательности найти удалить все элементы, лежащие в промежутке [A*X; B*X], где X – среднее арифметическое элементов последовательности, A и B – задаваемые пользователем коэффициенты. Использовать Deque и List. Один из них написать вручную, другой можно использовать stl. Deque я написал вручную. Лист не могу сделать уже 3 недели где-то, не могу понять как удалить из промежутка с помощью итераторов. Я уже по всякому пробовал, никак не получается. Удалить пробовал функцией erase(), не могу задать итераторами нужный промежуток.
Прошу помощи

Вот что у меня есть:

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
#include <iostream>
#include <clocale>
#include <list>
#include <algorithm>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    int A, B;
    cout<<"Введите число A: ";
    cin>>A;
    cout<<"Введите число B: ";
    cin>>B;
        while(B<A)
    {
        cout<<"Значение A должно быть меньше значения B!"<<endl;
        cout<<"Введите число A: ";
        cin>>A;
        cout<<"Введите число B: ";
        cin>>B;
    }
    cout<<endl;
    cout<<"Введите элементы последовательности: ";
    list<int>a;
    a.begin();
    int i;
    cin>>i;
    int n=0;
    while(!feof(stdin))
    {
        
        n++;
        a.push_back(i);
        cin>>i;
    }
    cout<<"Полученная последовательность: ";
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
        cout<<*it<<" ";
        cout<<endl;
        int x=0;
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
        x=x+*it;
    x=x/n;
    cout<<endl;
    cout<<"Среднее арифмитическое последовательности равно(x): ";
    cout<<x<<endl;
    A=A*x;
    B=B*x;
 
 
    //cout<<A<<endl;
    //cout<<B<<endl;
    cout<<"Полученная последовательность: ";
 
    for(list<int>::iterator it=a.begin;it=a.end();it++)
        cout<<*it;
    cout<<endl;
        system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
06.12.2012, 18:55     stl, удаление элементов в list #2
C++
1
a.erase(a.begin() + A, a.begin() + B);
Такое должно сработать.
BeRS777
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 9
06.12.2012, 18:56  [ТС]     stl, удаление элементов в list #3
Цитата Сообщение от PraZuBeR Посмотреть сообщение
C++
1
a.erase(a.begin() + A, a.begin() + B);
Такое должно сработать.
так тоже пробовал не получается сразу 11 ошибок выдаёт компилятор
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.12.2012, 19:01     stl, удаление элементов в list #4
remove_if

Добавлено через 1 минуту
Цитата Сообщение от BeRS777 Посмотреть сообщение
не могу задать итераторами нужный промежуток
Как я понял, здесь просят удалить не элементы от а до б, а элементы, у которых значение в промежутке лежит. Его итераторами задавать не нужно.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
06.12.2012, 19:01     stl, удаление элементов в list #5
C++
1
2
3
    a.erase (a.begin()+5); // удаление, например, 6-го элемента вектора
 
    myvector.erase (a.begin(),a.begin()+3); // удаление первых трех элементов вектора.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
06.12.2012, 19:02     stl, удаление элементов в list #6
C++
1
a.erase(std::next(a.begin(), A), std::next(a.begin(), B));
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 20:11     stl, удаление элементов в list
Еще ссылки по теме:

C++ Удаление list STL
C++ Сортировка диапазона элементов в list (STL)
Работа с STL list + пропись List.h C++

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

Или воспользуйтесь поиском по форуму:
BeRS777
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 9
06.12.2012, 20:11  [ТС]     stl, удаление элементов в list #7
Цитата Сообщение от Vourhey Посмотреть сообщение
remove_if

Добавлено через 1 минуту

Как я понял, здесь просят удалить не элементы от а до б, а элементы, у которых значение в промежутке лежит. Его итераторами задавать не нужно.
спасибо большое!))) я просто зол на себя жестко))) просто 3 недели ничего не мог сделать, только потому что не правильно условие задачи читал)))

Добавлено через 1 час 2 минуты
Цитата Сообщение от Vourhey Посмотреть сообщение
remove_if

Добавлено через 1 минуту

Как я понял, здесь просят удалить не элементы от а до б, а элементы, у которых значение в промежутке лежит. Его итераторами задавать не нужно.
Можешь подробней как мне этой функцией воспользоваться? она получается удаляет если функция возвращает true, то есть функция должна возвращать true, если текущие значение находится в промежутке и удалять это значение? или как то по-другому, можешь объяснить?
Yandex
Объявления
06.12.2012, 20:11     stl, удаление элементов в list
Ответ Создать тему

Метки
list, stl, удаление, элементов
Опции темы

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