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

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

Войти
Регистрация
Восстановить пароль
 
kn0w
3 / 3 / 0
Регистрация: 09.10.2012
Сообщений: 81
#1

Функция (удаление элементов вектора, равных переданному значению) - C++

03.01.2013, 13:10. Просмотров 570. Ответов 6
Метки нет (Все метки)

Здравствуйте товарищи и С Новым Годом!!! Большую часть задания сделал, нужно еще кое что дополнить, все никак не соображу. Вообщем мне нужно, чтобы "Filter" удалял элементы вектора равные переданному значению т.е мне нужна еще одна функция , которая будет удалять например вектор "20".
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
102
103
104
#include <iostream>
#include <conio.h>
 
using namespace std;
 
struct vect
{
    int length ;
    struct vect *next;
};
 
vect *first = NULL;
vect *follow = NULL;
vect *node, *node2;
void Add()
{
    vect *temp;
    temp = new vect;
    cout << "\nEnter length for addition ";
    cin >> temp->length;
 
    if(!first)
    {
        first = temp;
        temp->next = NULL;
 
    }
     
    follow = first;
    while (follow->next)
        follow = follow ->next;
    follow->next = temp;
    temp->next=NULL;
 
}
 
void Print()
{
        
        follow = first;
        while (follow)
        {
            cout << '\n' << follow->length;
            follow = follow->next;
        }
        cout << "\nPress any key...";
        while (!kbhit());
    
}
 
void sort()
{
    
    for( node = first; node; node = node->next )
        for( node2 = first; node2; node2 = node2->next )
            if( node->length > node2->length ){ 
                int i = node->length;
                node->length = node2->length;
                node2->length = i;
            }
        cout << "\nSorting is finished...";
        while (!kbhit());
    
 
}
void Filter ()
{
       
}
 
 
void main()
{
    system("color F0");
    int key = 0;
    
    while (key != 27)
    {
        cout << "\n1.  Add to vector"; //добавить вектор
        cout << "\n2.  To execute sorting"; // выполнение сортировки
        cout << "\n3.  Print the sorted vectors";   //вывод на экран отсорти-рованных векторов
        cout << "\n4.  Filter";//Удаление вектора
        cout << "\n    Esc Exit"; //выход из программы
        cout << "\n? ";
        key = getche();
 
                 switch (key)
        {
            case '1':
                Add();
                break;
            case '2':
                sort();
                break;
            case '3':
                Print();
                break;
            case '4':
                Filter();
                break;
        }
    }
    system("PAUSE");
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2013, 13:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция (удаление элементов вектора, равных переданному значению) (C++):

Массив: Заменить последний из отрицательных элементов в массиве на три элемента, равных заданному значению. - C++
Вставка в вектор новых элементов 1)Заменить последний из отрицательных элементов в массиве на три эле¬мента, равных заданному значению....

Найти числа элементов в двумерном массиве, равных значению Т, вводимому с клавиатуры и перемножьте эти элементы. - C++
народ помогите решить. Найти число элементов в двумерном массиве , размером n x m, равных значению Т, вводимому с клавиатуры и...

Удаление элементов, равных числу Х - C++
Нужно удалить все элементы, равные введенному числу. В моей программе удаляется только одно число, даже если оно повторяется 2 раза....

Удаление элементов в массиве равных числу X - C++
Удалить все элементы из массива a равных числу X cin&gt;&gt;x; cin&gt;&gt;n; for (int i = 0; i&lt;n; i++) { }

Поиск и удаление равных элементов массива - C++
Здрасте, здрасте!! ^_^V Уважаемы господа программисты и те, кто сюда просто зашел полюбопытствовать, очень прошу обратить внимаение...

Связный список; удаление равных максимальному элементов - C++
считать числа в связный список, найти макс. элемент, удалить из списка все элементы, равные максимальному. #include &lt;iostream&gt; ...

6
Croessmah
Эксперт CЭксперт С++
13415 / 7568 / 855
Регистрация: 27.09.2012
Сообщений: 18,631
Записей в блоге: 3
Завершенные тесты: 1
03.01.2013, 13:20 #2
Лист A4, карандаш и рисунок предстоящей работы - ответ придет сам по себе.
0
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
03.01.2013, 13:34 #3
C++
1
v.erase(std::find(v.begin(), v.end(), n));
v - вектор.
n - удаляемый елемент.
0
Croessmah
03.01.2013, 13:42
  #4

Не по теме:

Цитата Сообщение от SeregaC++ Посмотреть сообщение
C++
1
v.erase(std::find(v.begin(), v.end(), n));
v - вектор.
n - удаляемый елемент.
Вы посмотрите на код ТС

0
Issues
03.01.2013, 13:46
  #5

Не по теме:

Croessmah, сорри

0
kn0w
3 / 3 / 0
Регистрация: 09.10.2012
Сообщений: 81
06.01.2013, 12:25  [ТС] #6
Help
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
06.01.2013, 12:41 #7
Код
Ваш список-вектор:

+----+      +----+      +----+      +----+      +----+      +----+      +----+
|  5 |  /-->| 10 |  /-->|  7 |  /-->|  2 |  /-->| 20 |  /-->|  3 |  /-->| 11 |
+----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+
| ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | XX |
+----+      +----+      +----+      +----+      +----+      +----+      +----+

Ищем элемент, равный двадцати. Для удаления надо найти его
и предыдущий для него:

+----+      +----+      +----+      +----+      +----+      +----+      +----+
|  5 |  /-->| 10 |  /-->|  7 |  /-->|  2 |  /-->| 20 |  /-->|  3 |  /-->| 11 |
+----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+
| ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | XX |
+----+      +----+      +----+      +----+      +----+      +----+      +----+
  /\
  ||
victim

prev => XX

+----+      +----+      +----+      +----+      +----+      +----+      +----+
|  5 |  /-->| 10 |  /-->|  7 |  /-->|  2 |  /-->| 20 |  /-->|  3 |  /-->| 11 |
+----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+
| ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | XX |
+----+      +----+      +----+      +----+      +----+      +----+      +----+
  /\          /\
  ||          ||
 prev       victim

+----+      +----+      +----+      +----+      +----+      +----+      +----+
|  5 |  /-->| 10 |  /-->|  7 |  /-->|  2 |  /-->| 20 |  /-->|  3 |  /-->| 11 |
+----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+
| ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | XX |
+----+      +----+      +----+      +----+      +----+      +----+      +----+
              /\          /\
              ||          ||
             prev       victim
<...>

+----+      +----+      +----+      +----+      +----+      +----+      +----+
|  5 |  /-->| 10 |  /-->|  7 |  /-->|  2 |  /-->| 20 |  /-->|  3 |  /-->| 11 |
+----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+
| ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | XX |
+----+      +----+      +----+      +----+      +----+      +----+      +----+
                                      /\          /\
                                      ||          ||
                                     prev       victim

Если бы элемента 20 бы не было, то следующим после 2 должен быть 3.
То есть следующим для prev должен стать следующий для victim.

                                            /-----------\
                                            |           |
+----+      +----+      +----+      +----+  |   +----+  |   +----+      +----+
|  5 |  /-->| 10 |  /-->|  7 |  /-->|  2 |  |   | 20 |  >-->|  3 |  /-->| 11 |
+----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+  |   +----+
| ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | ==----/   | XX |
+----+      +----+      +----+      +----+      +----+      +----+      +----+
                                      /\          /\
                                      ||          ||
                                     prev       victim

Всё, осталось прибить victim.

+----+      +----+      +----+      +----+                  +----+      +----+
|  5 |  /-->| 10 |  /-->|  7 |  /-->|  2 |  /-------------->|  3 |  /-->| 11 |
+----+  |   +----+  |   +----+  |   +----+  |               +----+  |   +----+
| ==----/   | ==----/   | ==----/   | ==----/               | ==----/   | XX |
+----+      +----+      +----+      +----+                  +----+      +----+

Для фильтрации просто продолжаем поиск, сделав victim равным
следующему для prev, и повторяя всё вышесказанное для подходящих
элементов.
И сразу: «А можно кодом?» — Нет, нельзя.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2013, 12:41
Привет! Вот еще темы с ответами:

Удаление элементов вектора - C++
Я конечно понимаю, что вектор это такая штука, которая удаляется сама при выходе из функции в которой она определена. Но мне все же...

Удаление элементов вектора - C++
Дана матрица смежности, мне нужно удалить из нее вершину. Это значит, что при удалении вершины номер 3 мне нужно из матрицы удалить 3...

Удаление элементов из вектора - C++
С консоли вводится вектор значений double и точность, удалить и вектора элементы разность между которыми по модулю меньше точности и...

Удаление элементов вектора - C++
как вызвать деструктор? почему не удаляется объект class a { public: a() { std::cout &lt;&lt; &quot;c&quot;; } ~a() { std::cout &lt;&lt;...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
06.01.2013, 12:41
Ответ Создать тему
Опции темы

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