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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить значение выражения e^Sinx + ln (Sinx) http://www.cyberforum.ru/cpp-beginners/thread751695.html
Добрый день, прошу помощи) Дано выражение: e^Sinx + ln (Sinx) наметки кода: #include "StdAfx.h" #include <math.h> #include <iostream.b> #include <conio.h> using namespace std; int main() {
C++ Написать программу, упорядочивающую массив строк в порядке убывания их длинны методом пузырьковой сортировки. Использовать указатели на строки. Написать программу, упорядочивающую массив строк в порядке убывания их длинны методом пузырьковой сортировки. Использовать указатели на строки. http://www.cyberforum.ru/cpp-beginners/thread751690.html
Написать программу, использующую стандартную функцию сравнения строк для определения среди трех строк, вводимых пользователем, одинаковых. C++
Написать программу, использующую стандартную функцию сравнения строк для определения среди трех строк, вводимых пользователем, одинаковых.
подпрограмма удаление непарных элементов массива С++ C++
Пожалуйста, срочно нужно, напишите код и желательно объяснить ...
C++ Написать программу, вычисления площади фигуры Программа должна управляться с помощью меню из шести пунктов: http://www.cyberforum.ru/cpp-beginners/thread751682.html
Написать программу, вычисления площади фигуры Программа должна управляться с помощью меню из шести пунктов: Текст задачи, Ввод данных для квадрата, Ввод данных для треугольника, Ввод данных для...
C++ Написать программу, определяющую максимальный элемент одномерного массива. Написать программу, определяющую максимальный элемент одномерного массива. При вводе/выводе элементов использовать индексы, а обработку элементов массива осуществлять с помощью указателей. Расчет... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
06.01.2013, 12:41
Код
Ваш список-вектор:

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