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

Как удалять определенные значения из массива? - C++

Восстановить пароль Регистрация
 
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,216
Завершенные тесты: 3
13.08.2014, 20:49     Как удалять определенные значения из массива? #1
Пишу программу по одной задаче, в которой требуется удалить элементы, значение которых меньше среднего арифметического динамического массива. Думал, элемент возможно удалить с помощью delete[индекс элемента]", но это не работает. В гугле нашел несколько методов, но описаны они были как-то криво, в итоге я ничего не понял. Так как удалять элементы из простого и динамического массива? Объясните подробно
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 20:49     Как удалять определенные значения из массива?
Посмотрите здесь:

C++ Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.
как задавать свои значения массива? C++
Как удалять элемент из строки в c++? C++
C++ Составить программу вычисления матрицы по формуле, и подсчитать для нее определенные значения.
Как вывести значения элементов массива? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
13.08.2014, 21:01     Как удалять определенные значения из массива? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
int n;cin>>n;
int* a=new int[n];// создали динамический массив
//const int n=10; int a[n];// объявление обычного массива
....
int k;cin>>k;// номер удаляемого элемента
if(k>=0 && k<n)
   for(int i=k;i<n-1;i++)
       a[i]=a[i+1];//удалили k элемент сдвинув все остальные на 1  влево
BlackIce
309 / 171 / 64
Регистрация: 18.01.2014
Сообщений: 387
13.08.2014, 21:17     Как удалять определенные значения из массива? #3
Никак, только переприсвоить этому элементу значение следующего, слудующему значение следующего за ним и т.д. до конца массива, при этом размер массива и выделенной для него памяти не изменяется и вы сами должны следить за текущей длинной массива:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <ctime>
#include <cstdlib>
#include <numeric>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
 
int main() {
    srand(time(0));
    int *a = new int[10], n = 10;
    cout << "массив:";
    for (int i = 0; i < n; ++i) {
        a[i] = rand() % 100;
        cout << ' ' << a[i];
    }
    double avg = accumulate(a, a + n, 0.0) / n;
    cout << "\nсреднее арифметическое: " << avg << endl;
    n = remove_if(a, a + 10, bind2nd(less<double>(), avg)) - a;
    cout << "результат:";
    for (int i = 0; i < n; ++i) cout << ' ' << a[i];
    delete[] a;
}
Если вам нужно именно удалять, то можете воспользоваться std::list или реализовать свой класс для списков.
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,216
Завершенные тесты: 3
14.07.2015, 20:35  [ТС]     Как удалять определенные значения из массива? #4
zss, о кстати, только щас заметил, что размер массива не уменьшается (если массив будет потом использоваться, можно случайно к последнему элементу обратиться, который по идее должен быть недоступен, ну и который будет копией предпоследнего элемента), поэтому в 6-ой строчке нужно написать "--n", а в 7-ой из "n-1" убрать -1
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,921
14.07.2015, 20:36     Как удалять определенные значения из массива? #5
tnk500, используйте std::vector<>
Yandex
Объявления
14.07.2015, 20:36     Как удалять определенные значения из массива?
Ответ Создать тему
Опции темы

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