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

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

Войти
Регистрация
Восстановить пароль
 
stx
6 / 6 / 0
Регистрация: 17.09.2012
Сообщений: 93
#1

Поиск и удаление элементов в одномерном массиве - C++

09.02.2014, 12:29. Просмотров 439. Ответов 9
Метки нет (Все метки)

Всем привет!

Задача такая:
Найти нужный элемент в массиве и удалить его.
Если есть повторы, их тоже нужно удалить.

Что-то у меня не получается, помогите пожалуйста разобраться в чём дело.

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
#include <iostream>
using namespace std;
 
int main()
{
    int n, i, elem;
 
    cout << "Razmernost: ";
    cin >> n;
    cout << "Nuzhniy element: ";
    cin >> elem;
 
    int *mas = new int[n];
    int *mass = new int[n];
 
//заполним массив
    cout << "Zapolnim massiv: ";
    for(i=0; i<n; i++)
        cin >> mas[i];
 
//выведем заполненный массив
    cout << "Massiv 1: ";
    for(i=0; i<n; i++)
        cout << mas[i] << ' ';
 
//ищем нужный элемент
    for(i=0; i<n; i++)
        if(mas[i]!=elem)
            mass[i]=mas[i];
        else {
            mass[i] = mas[i+1];
            n--;
            }
 
//выведем обработанный массив
    cout << "\nMassiv 2: ";
    for(i=0; i<n; i++)
        cout << mass[i] << ' ';
 
delete []mas;
delete []mass;
 
return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 12:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск и удаление элементов в одномерном массиве (C++):

Удаление и замена элементов в одномерном массиве - C++
Добрый день. Помогите пожалуйста с задачей. Дан одномерный массив Yk. Удалить все элементы с дробной частью. Заменить все элементы с...

Поиск одинаковых элементов в одномерном массиве - C++
Необходимо определить есть ли в одномерном массиве одинаковые элементы. Программа находит одинаковые элементы , но она пропускает последний...

Поиск суммы элементов в диапазоне [1;15] в одномерном массиве - C++
поиск суммы элементов в диапазоне в одномерном массиве.

Поиск произведения положительных четных элементов в одномерном массиве - C++
Помогите сделать программу поиска произведения положительных четных элементов в одномерном массиве Вот код #include &lt;math.h&gt; ...

Поиск максимального количества одинаковых элементов в одномерном массиве - C++
Дан целочисленный массив размера N.Найти максимальное количество его одинаковых элементов. Программа работает неправильно помогите найти...

Поиск произведения элементов в заданном диапазоне в одномерном массиве - C++
Завтра экзамен!Нужен код в С++!Буду очень благодарна! Разработать приложение поиска произведения элементов в диапазоне в одно-мерном...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 12:36 #2
stx, а что не правильно? Код то рабочий
0
Жанерке
34 / 34 / 2
Регистрация: 22.09.2013
Сообщений: 170
09.02.2014, 12:48 #3
Enotniy, повторы не удаляет. вот в чем проблема
0
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
09.02.2014, 12:51 #4
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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    std::vector <int> vector;
    std::cout << "Input elements: " << std::endl;
    std::copy(std::istream_iterator <int> (std::cin), std::istream_iterator <int> (), std::back_inserter(vector));
    
    std::cin.clear();
    std::cin.sync();
 
    int eraseElement;
    std::cout << "Input the element to erase: ";
    std::cin >> eraseElement;
 
    std::cout << "Result: " << std::endl;
    vector.erase(std::remove(vector.begin(), vector.end(), eraseElement), vector.end());
    std::copy(vector.begin(), vector.end(), std::ostream_iterator <int> (std::cout, " "));
 
    std::system("pause >> temp");
    return 0;
}
0
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 12:59 #5
stx,Поиск и удаление элементов в одномерном массиве
0
stx
6 / 6 / 0
Регистрация: 17.09.2012
Сообщений: 93
09.02.2014, 13:06  [ТС] #6
Цитата Сообщение от Enotniy Посмотреть сообщение
stx, а что не правильно? Код то рабочий
Произвольные результаты выдаёт.

Проверяю как работает:
1) Размерность = 3, заполняю массив = {1, 2, 3}, нужный элемент = "2", ответом будет {1, 3}.

2) Размерность = 5, заполняю массив = {1, 2, 3, 4, 5}, нужный элемент = "3", результат выполнения такой - {1, 2, 4, 4}.
А должно быть {1, 2, 4, 5}.

Проверяю на поиск и удаление повторяющихся элементов:
Размерность = 5, заполняю массив = {1, 2, 3, 3, 5}, нужный элемент = "3", результат выполнения такой - {1, 2, 3}.
А должно быть {1, 2, 5}.

Проверяю работу на большей размерности и элементами не идущими по порядку:
Размерность = 10, заполняю массив = {1, 2, 3, 5, 5, 6, 7, 5, 9, 10}, элемент выбираю = "5", результат выполнения такой - {1, 2, 3, 5, 6, 6, 7}.
А должно быть {1, 2, 3, 6, 7, 9, 10}.

Ставлю нужные элементы через один:
Размерность = 10, заполняю массив = {1, 3, 2, 3, 5, 3, 6, 3, 7, 3}, элемент выбираю = "3", результат выполнения такой - {1, 2, 2, 5, 5, 6, 6}.
Должно быть {1, 2, 5, 6, 7}.

Добавлено через 1 минуту
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    std::vector <int> vector;
    std::cout << "Input elements: " << std::endl;
    std::copy(std::istream_iterator <int> (std::cin), std::istream_iterator <int> (), std::back_inserter(vector));
    
    std::cin.clear();
    std::cin.sync();
 
    int eraseElement;
    std::cout << "Input the element to erase: ";
    std::cin >> eraseElement;
 
    std::cout << "Result: " << std::endl;
    vector.erase(std::remove(vector.begin(), vector.end(), eraseElement), vector.end());
    std::copy(vector.begin(), vector.end(), std::ostream_iterator <int> (std::cout, " "));
 
    std::system("pause >> temp");
    return 0;
}
Увы, STL в программе нет.
Сделать нужно максимально просто.

Добавлено через 1 минуту
Цитата Сообщение от Enotniy Посмотреть сообщение
На скриншоте как раз видно, что ответ произвольный
0
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,678
09.02.2014, 15:07 #7
добавить после 31 строки строчку
C++
1
for (int j=i+1;j<n;j++) mas[j]=mas[j+1];
0
stx
6 / 6 / 0
Регистрация: 17.09.2012
Сообщений: 93
09.02.2014, 17:10  [ТС] #8
Цитата Сообщение от daslex Посмотреть сообщение
добавить после 31 строки строчку
C++
1
for (int j=i+1;j<n;j++) mas[j]=mas[j+1];
При j=i+1 удаляет следующий элемент, т.е. не тот, что нужен.
При j=i работает только для не идущих подряд элементов.
0
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,678
09.02.2014, 17:38 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int count=0;
//ищем нужный элемент
    for (int i=0;i<n;i++){
       if (mas[i]!=elem){
        mass[count]=mas[i];
        count++;
       }
    }
 
////////////////////
//выведем обработанный массив
    cout << "\nMassiv 2: ";
    for(i=0; i<count; i++) //тут не N, а count теперь
1
stx
6 / 6 / 0
Регистрация: 17.09.2012
Сообщений: 93
09.02.2014, 18:10  [ТС] #10
Теперь работает, спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2014, 18:10
Привет! Вот еще темы с ответами:

Поиск произведения нечетных отрицательных элементов в одномерном массиве - C++
Помогите,пожалуйста, разработать приложение поиска произведения нечетных отрицательных элементов в одномерном массиве. Может у кого есть...

В одномерном массиве, состоящем из вещественных элементов вычислить номер минимального элемента в массиве, сумму элементов массива - C++
В одномерном массиве, состоящем из 10 вещественных элементов вычислить: 1. Номер минимального элемента в массиве 2. Сумму...

Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве. - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;stdio.h&gt; #include...

Поиск элемента в одномерном массиве - C++
Помогите, пожалуйста, с решением задач: 1)Найти среднее арифметическое всех отрицательных элементов одномерного вещественного массива...


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

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

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