Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Statussrg
1 / 1 / 0
Регистрация: 25.10.2014
Сообщений: 21
1

Удалить из массива элемент с заданным ключом

20.02.2015, 12:41. Просмотров 1843. Ответов 3
Метки нет (Все метки)

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

Постановка задачи:
Написать программу, в которой создаются динамические массивы и выполнить их обработку в соответствии со своим
вариантом.


Порядок выполнения работы:
1. Ввести размер массива;
2.Сформировать массив с помощью операции new или библиотечных функций malloc (calloc);
3.Заполнить массив (можно с помощью датчика случайных чисел);
4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы);
5.Напечатать массив(ы)-результат(ы);
6.Удалить динамические массивы с помощью операции delete или библиотечной функции free.

Вариант:
Сформировать одномерный массив. Удалить из него элемент с заданным ключом, добавить элемент с заданным ключом;

Спасибо Всем кто откликнулся!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2015, 12:41
Ответы с готовыми решениями:

Сформировать двунаправленный список. Удалить из него элемент с заданным ключом, добавить элемент с указанным номером
Записи в линейном списке содержат ключевое поле типа *char(строка символов)....

Двунаправленный список: удалить элемент с заданным ключом
Записи в линейном списке содержат ключевое поле типа *char(строка символов)....

Сформировать одномерный массив. Удалить из него К элементов, начиная с заданного номера, добавить элемент с заданным ключом
Сформировать одномерный массив. Удалить из него К элементов, начиная с...

Из массива удалить элемент с заданным номером
Здравствуйте,у меня вот такое задание: Из одномерного динамического массива...

Удалить из массива элемент с заданным индексом
Дан массив из n элементов и индекс элемента в списке k. Удалите из списка...

3
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
20.02.2015, 16:32 2
С ключами не понятно. Что такое "ключ"? Если предположить, что это индекс элемента в массиве, то с удалением вопросов нет - берём соответствующий элемент и удаляем из массива.
А вот добавление по ключу - это как? Взять элемент готового массива с индексом, равным ключу и добавить... куда? В новый массив? В старый массив? В начало? В конец? Туда откуда был удалён элемент? Или ключ будет с двумя параметрами (индекс откуда, индекс куда)?

Сделал так:

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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
Постановка задачи:
Написать программу, в которой создаются динамические массивы и выполнить их обработку
в соответствии со своим вариантом.
 
Порядок выполнения работы:
1. Ввести размер массива;
2.Сформировать массив с помощью операции new или библиотечных функций malloc (calloc);
3.Заполнить массив (можно с помощью датчика случайных чисел);
4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы);
5.Напечатать массив(ы)-результат(ы);
6.Удалить динамические массивы с помощью операции delete или библиотечной функции free.
 
Вариант:
Сформировать одномерный массив. Удалить из него элемент с заданным ключом,
добавить элемент с заданным ключом;
*/
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int main()
{
    using namespace std;
 
    cout << "\nPlease enter the quantity of the elements: ";
    int arrSize;
    cin >> arrSize;
    int * arr_1 = new int[arrSize];
    cout << endl;
 
    srand(time(NULL));
 
    for (int i=0; i<arrSize; ++i)
    {
        arr_1[i] = 10 + rand() % 90;
        cout << arr_1[i] << " ";
    }
    cout << endl;
 
    cout << "\nPlease enter the index of the element\n"
            "that you want to delete from the array\n"
            "(remember that the first element has index of 0,\n"
            "the second has index of 1, the third has index of 2, and so on): ";
    int deleteKey;
    cin >> deleteKey;
    cout << endl;
    --arrSize;
 
    int * arr_2 = new int[arrSize];
 
    for (int i=0, j=0; i<arrSize; ++i, ++j)
    {
        if (j != deleteKey)
        {
            arr_2[i] = arr_1[j];
        }
 
        else
        {
            ++j;
            arr_2[i] = arr_1[j];
        }
 
        cout << arr_2[i] << " ";
    }
 
    cout << "\n\nPlease choose the location of the element\n"
            "that you want to insert to new array:\n"
        "1. after some element (type 1);\n"
        "2. before some element (type 2).\n";
    int choice = 0;
    cin >> choice;
 
    int insertAfter = -2;
    int insertBefore = -2;
 
    switch (choice)
    {
        case 1: cout << "\nPlease enter the index, after which you want\n"
                        "to delete the element from the array: ";
        cin >> insertAfter;
        break;
 
        case 2: cout << "\nPlease enter the index, before which you want\n"
                        "to delete the element from the array: ";
        cin >> insertBefore;
        break;
    }
 
    ++insertAfter;
    --insertBefore;
 
    cout << "\nPlease enter a value of the element\n"
            "that you want to insert to the array: ";
    int insertValue;
    cin >> insertValue;
    cout << endl;
 
    ++arrSize;
 
    for (int i=0, j=0; i<arrSize; ++i, ++j)
    {
        if (i == insertAfter || i == insertBefore)
        {
            arr_1[i] = insertValue;
            --j;
        }
 
        else
        {
            arr_1[i] = arr_2[j];
        }
 
        cout << arr_1[i] << " ";
    }
 
    delete [] arr_1;
    delete [] arr_2;
 
    return 0;
}
P.S. Пользователь программы должен помнить, что нумерация элементов массива начинается с нуля.
0
Renji
2124 / 1562 / 476
Регистрация: 05.06.2014
Сообщений: 4,542
20.02.2015, 20:13 3
Цитата Сообщение от Statussrg Посмотреть сообщение
Сформировать одномерный массив. Удалить из него элемент с заданным ключом, добавить элемент с заданным ключом;
Элементы с ключами бывают в ассоциативных массивах, но их обычно не зовут одномерными. Не говоря уже о том, что по хорошему внутри ассоциативного массива какое ни будь там сбалансированное дерево, реализация которого - задача явно не для новичков. Так что лучше у преподавателя уточните что он сказать хотел.
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7092 / 3394 / 461
Регистрация: 04.12.2011
Сообщений: 9,446
Записей в блоге: 5
20.02.2015, 23:24 4
Renji, это может быть и одномерный массив. Создание и добавление может поддерживать его упорядоченность. Ключом служит значение и это значит, что оно должно быть уникальным и это главное сходство с ассоциированным массивом. Конечно лучше, возможно, использовать список, но это уже вопрос природы данных, то есть их связи с алгоритмом. Как они добавляются, удаляются, извлекаются? (В каком порядке?)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2015, 23:24

Удалить элемент массива с заданным номером
Помогите на завтра сделать лабу 1.Сформировать динамический одномерный массив,...

Сформировать однонаправленный список и добавить элемент перед элементом с заданным ключом
задача: Сформировать однонаправленный список. Добавить элемент перед...

Указатели . Удалить из одномерного массива элемент с заданным номером, добавить К элементов, начиная с заданного номера
Сформировать одномерный массив. Удалить из него элемент с заданным номером, ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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