Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/63: Рейтинг темы: голосов - 63, средняя оценка - 4.84
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
1

Удаление записи из массива структур.

04.10.2011, 22:52. Показов 13022. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Прошу помочь мне с таким делом: необходимо удалить запись из массива структур.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
struct List{  // Объявление структуры
    int id;
    char name [30];
    int kol;
    };
List Massiv[5];  // Объявление массива структур
for (int i=0;i<5;i++)  // Заполнение массива структур
    {
        cin>>Massiv[i].id;
        cin>>Massiv[i].name;
        cin>>Massiv[i].kol;
     }
}
Собственно, нужно удалить запись, например, 2 запись массива, т.е. Massiv[1]. Именно удалить, а не обнулить записи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2011, 22:52
Ответы с готовыми решениями:

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

Удаление структур из массива
нужна функция, которая бы удаляла нужный элемент массива структур, но я совершенно не имею...

Удаление динамического массива структур
Если удалять массив структур как обычно пишут, то при запросе следующей структуры из массива на...

Удаление структуры из массива структур
Допустим имеется структура ... struct WORKER { char familiya; char name; char otchestvo;...

21
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.10.2011, 22:58 2
Так, для этого тебе надо создать список. А у тебя массив.
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
04.10.2011, 22:58  [ТС] 3
Массив записей. Получается 5 элементов массива типа struct, т.е. список.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.10.2011, 23:05 4
Нет. Ты не прав. Почитай про одно- и двусвязные списки! Массив и связной список - это разные вещи!
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
04.10.2011, 23:05 5
Не важной какой тип имеет массив. Массив как был непрерывной областью памяти, так он им и останется. Нельзя взять и отвязать из массива какой-то элемент.
Наглядно в памяти(виртуальной памяти) выглядит это так( хотя может не совсем так):
массив целых чисел: {int}{int}{int} и т.д.
массив типа List: {{id}{name[30]}{kol}}{{id}{name[30]}{kol}}{{id}{name[30]}{kol}} и т.д.
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
04.10.2011, 23:08  [ТС] 6
Иными словами, мне нужно удалить элемент массива с определенным номером вообще. В принципе, можно объявить еще одну переменную типа List, с ее помощью поместить выбранный элемент на последнее место, а последний элемент на место того, который мы собираемся удалить. А потом на печать в цикле выдать на 1 элемент меньше.

Но я бы хотел более рациональный способ.

Добавлено через 59 секунд
Спасибо, ну тогда придется вышеуказанным мной способом? Больше никак?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
04.10.2011, 23:11 7
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Спасибо, ну тогда придется вышеуказанным мной способом? Больше никак?
Ваш способ плохо годится.
Читайте:
1
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
04.10.2011, 23:14  [ТС] 8
Спасибо, конечно. Но со списками я пока не знаком. Мне нужно именно через Структуры. Да и вся работа у меня через Структуры уже сделана...

Добавлено через 16 секунд
А списками займусь как-нибудь...
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.10.2011, 23:21 9
Цитата Сообщение от Chelioss Посмотреть сообщение
Ваш способ плохо годится.
Да он вообще не годится.
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
04.10.2011, 23:23  [ТС] 10
lazybiz, ты не тролль случайно? А то болты кладешь, способы критикуешь... Вот напиши, как это должно выглядеть, потом критикуй, если конечно, знаешь, как написать..
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.10.2011, 23:37 11
BoBaH26, нет, я не трольлб.. блин, откуда ты знаешь как пишется это слово?!
На счет болтов и критики я тебя не понял. А может у тебя ко мне какая-то личная неприязнь?
Я лишь сказал что твой способ не подходит. То что из массива нельзя удалить элемент - знает любой программист в данной области. Что не так?
То что Ваш способ вообще не годится - так это правда. Кстати, а где Ваш способ!?

Добавлено через 1 минуту
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Вот напиши, как это должно выглядеть, потом критикуй, если конечно, знаешь, как написать..
Да я не собираюсь писать тебе решение задачи, т.к. ты сам по себе лентяй и это видно. А таким я не помогаю. Уж извини.
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
04.10.2011, 23:44  [ТС] 12
lazybiz, если я сейчас напишу тебе программу, которую я сделал, ты не будешь говорить, что я лентяй. Просто она огромная, переделывать ее под списки я не буду, т.к. программный код уже содержит около 200 строк, я использовал структуры. МОЙ СПОСОБ я как раз сейчас делаю. Если тебе лень помочь, так и скажи.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
05.10.2011, 00:00 13
Вовчик, можно тебя так называть!? Так вот, Вовчик, Форум для того и нужен, чтобы люди выкладывали свой код (не зависимо от размера), описывали проблему и говорили что где не так, и какие попытки были предприняты. К сожалению, такого замечено не было.
Давай не будем спорить и ругаться, просто покажи как ты из массива (структур) удаляешь один элемент.
Мне не лень помочь. Просто задай вопрос правильно!

* и не надо больше про троллей, ок!?
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.10.2011, 00:03  [ТС] 14
lazybiz, хорошо. Как сделаю, сразу выложу. Смысл в том, что я элемент из массива не удаляю, а помещаю его в конец и выдаю на печать все элементы, кроме последнего. Т.о., получается, что этого элемента нет, но только "визуально".
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
05.10.2011, 00:10 15
BoBaH26, так тебе можно сделать проще! Двигать в конец не надо, надо просто пометить индекс элемента и при выводе не выводить его. Он же все-равно не удаляется! Так же проще
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.10.2011, 00:20  [ТС] 16
Вообщем, речь идет о массивах. Записи я пока не трогаю. Допустим, надо удалить 3 элемент массива.
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
int massiv[5];
int prom;
for (int i=0;i<5;i++) cin>>massiv[i];
prom = massiv[2];
massiv[2] = massiv[4];
massiv[4] = prom; // Элемент стал последним.
for (int i=0;i<4;i++) cout<<massiv[i]<<"\t"; // А вот здесь выдаем элементы на печать.
                                                           // Напечатаются все, кроме последнего.
}
Добавлено через 1 минуту
Цитата Сообщение от lazybiz Посмотреть сообщение
BoBaH26, так тебе можно сделать проще! Двигать в конец не надо, надо просто пометить индекс элемента и при выводе не выводить его. Он же все-равно не удаляется! Так же проще
А вот об этом, пожалуйста, поподробнее. Как его проигнорить в цикле for (int i=0;i<5;i++)?

Добавлено через 3 минуты
Немного не понял, что значит "пометить"...
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
05.10.2011, 00:29 17
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Допустим, надо удалить 3 элемент массива.
Допустим надо пропустить его при выводе. Суть такова. Вставляем в цикл:
C++
1
2
3
    if ( i != 3 ) { // если не 4-й элемент, то на вывод
        cout << massiv[i] << "\t";
    }
И твои махинации с передвижениями ни к чему.

Добавлено через 1 минуту
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Немного не понял, что значит "пометить"...
Пометить, это значит, что ты в переменную i записываешь номер того элемента, который не хочешь выводить.
1
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.10.2011, 00:35  [ТС] 18
Спасибо, да не. Я не понял, как реализовать это "пометить", в этом смысле . А вот насчет условия, спасибо. Голова уже не соображает. Завтра буду доделывать. Ну в итоге около 200 строк программного кода будет. Сейчас пока 150, я ошибся немного.

Добавлено через 1 минуту
Ну, плюс там много однотипных строк, где я обрабатываю сами записи.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
05.10.2011, 00:39 19
Я рад что трольбь смог тебе помочь)))
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.10.2011, 00:42  [ТС] 20
lazybiz, ну извини, просто мне сначала так показалось, просто ты в теме "рандом числа" писал про то, что ему болт класть, способ мой критиковал, а сам ничего на тот момент не предложил. Ну ладно, забыли. Кстати, так с условием гораздо проще, если я захочу сделать функцию, тем более. Мой способ слишком сложен и не универсален. Но все ж работает.
1
05.10.2011, 00:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2011, 00:42
Помогаю со студенческими работами здесь

Массив структур: добавление записи, удаление записи, поиск по одному или нескольким из полей
Необходимо реализовать базу данных с полями «Фамилия», «Имя», «Отчество», «Пол», «Год рождения»....

Удаление элемента из массива структур
Кто может показать функцию, которая будет удалять элемент из массива структур (сведения о студенте)...

Удаление записи из массива записи или файла
Доброго времени суток... Задача стоит такая. Есть массив записей, прочитали из файла или так...

Создание динамического массива структур и его удаление
Господа, поясните пожалуйста следующий момент: создаю структуру: struct TTagList { ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru