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

Функция удаления последнего четного элемента - C++

Восстановить пароль Регистрация
 
asbdsh
0 / 0 / 1
Регистрация: 09.11.2013
Сообщений: 34
21.11.2013, 00:07     Функция удаления последнего четного элемента #1
Помогите, нужно составить функцию удаления из состава массива последний четный элемент.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 00:07     Функция удаления последнего четного элемента
Посмотрите здесь:

Найти номер последнего максимального элемента среди элементов, лежащих в диапазоне [c,d] и расположенных до первого четного элемента. C++
функция в си++ для удаления элемента C++
C++ Односвязный список. Вывести сумму последнего элемента и первого, предпоследнего и последнего и т.д.
После каждого четного элемента массива вставить два элемента с тем же значением, после чего полученный массив отсортировать по убыванию C++
C++ Функция удаления элемента из дерева, ошибка в коде
После каждого четного элемента массива вставить 2 элемента с тем же значением, полученный массив отсортировать C++
C++ Функция для удаления элемента в двумерном динамическом массиве. В чем ошибка?
Освобождение памяти (функция удаления элемента Очереди) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
21.11.2013, 00:29     Функция удаления последнего четного элемента #2
asbdsh, както так
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
#include <iostream>
#include <time.h>
using namespace std;
int* del(int*,int&);
int main() {
    srand(time(NULL));
    int size=5;
    int* arr=new int[size];
    for (int i=0;i<size;i++) 
        cout<<(arr[i]=rand()%10)<<" ";
    cout<<endl;
    int* temp;
    temp=del(arr,size);
    for (int i=0;i<size;i++) 
        cout<<temp[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
int* del(int* arr,int& size) {
    int* temp;
    for (int i=size-1;i>=0;i--)
        if (arr[i]%2==0) {
            for (int j=i;j<size-1;j++)
                arr[j]=arr[j+1];
            temp=new int[size-1]; size--;
            for (int i=0;i<size;i++)
                temp[i]=arr[i];
            return temp;
        }
    return arr;
}
e810nsky
0 / 0 / 0
Регистрация: 20.11.2013
Сообщений: 6
21.11.2013, 01:03     Функция удаления последнего четного элемента #3
Ну, если еще нужно. Тут реализация с vector. Есть проверка на отсутствие в массиве четных чисел.
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
#include <iostream>
#include <vector>
 
using namespace std;
 
//Прототип функции поиска, передается ссылка на вектор.
void fDeleteEven(vector <int> &vec);
 
 
int main()
{
    //Массив нужен для инициализации вектора(вектор представляет собой аналог массива,но со встроенными функциями с которыми удобнее работать, например arr1.size() возвращает размер массива. arr1 в данном случае это вектор.
    int arr[] = {2,17,21,42,59,30,51,47};
    //Узнаем размер массива arr
    int arrSize=sizeof(arr)/sizeof(arr[0]);
    //Создаем вектор arr1, инициализируем значениями массива.
    vector <int> arr1 (arr,arr+arrSize);
    //Размер массива и вывод значений
    cout<<"Size: "<<arr1.size()<<endl;
    for (int i=0;i<arr1.size();i++)
        cout<<arr1[i]<<" ";
    cout<<endl;
    //Передаем вектор функции
    fDeleteEven(arr1);
    //Вывод новых значений
    cout<<endl<<"Size: "<<arr1.size()<<endl;
    for (int i=0;i<arr1.size();i++)
        cout<<arr1[i]<<" ";
    cout<<endl;
 
    cin.get();
    return 0;
}
//реализация функции поиска
void fDeleteEven(vector <int> &vec)
{
    //Переменная хранящая номер четного числа.
    int even=-1;
    //Поиск последнего четного элемента
    for (int i=vec.size()-1;i>=0;i--)
    {
        if(vec[i]%2==0)
        {
            even=i;
            break;
        }
    }
    //Если найден четный элемент смещаем массив, изменяем его размер.
    if (even!=-1)
    {
        for (int i=even;i<vec.size()-1;i++)
            vec[i]=vec[i+1];
        vec.resize(vec.size()-1);
        cout<<endl<<"Deleted element: "<<even+1;
    }
    //Если четный элемент не найден, выводим соотв сообщение.
    else 
        cout<<"No even numbers in array.";
 
}
Yandex
Объявления
21.11.2013, 01:03     Функция удаления последнего четного элемента
Ответ Создать тему
Опции темы

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