Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 25.10.2014
Сообщений: 21
1

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

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

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

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


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

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

Спасибо Всем кто откликнулся!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2015, 12:41
Ответы с готовыми решениями:

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

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

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

Удалить К элементов из одномерного массива, начиная с заданного, добавить элемент с заданным ключом
Нужно Удалить К элементов из одномерного массива, начиная с заданного. Пытался сделать разными...

3
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5287 / 2374 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
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
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
20.02.2015, 20:13 3
Цитата Сообщение от Statussrg Посмотреть сообщение
Сформировать одномерный массив. Удалить из него элемент с заданным ключом, добавить элемент с заданным ключом;
Элементы с ключами бывают в ассоциативных массивах, но их обычно не зовут одномерными. Не говоря уже о том, что по хорошему внутри ассоциативного массива какое ни будь там сбалансированное дерево, реализация которого - задача явно не для новичков. Так что лучше у преподавателя уточните что он сказать хотел.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.02.2015, 23:24 4
Renji, это может быть и одномерный массив. Создание и добавление может поддерживать его упорядоченность. Ключом служит значение и это значит, что оно должно быть уникальным и это главное сходство с ассоциированным массивом. Конечно лучше, возможно, использовать список, но это уже вопрос природы данных, то есть их связи с алгоритмом. Как они добавляются, удаляются, извлекаются? (В каком порядке?)
0
20.02.2015, 23:24
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2015, 23:24
Помогаю со студенческими работами здесь

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

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

Найти элемент с заданным ключом в стеке
Найти элемент с заданным ключом в стеке .Язык Си. Я задаю стек : #include typedef struct st ...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru