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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте! Прошу помочь мне с таким делом: необходимо удалить запись из массива структур.
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.10.2011, 22:52
Ответы с готовыми решениями:

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

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

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

21
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
04.10.2011, 22:58
Так, для этого тебе надо создать список. А у тебя массив.
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
04.10.2011, 22:58  [ТС]
Массив записей. Получается 5 элементов массива типа struct, т.е. список.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
04.10.2011, 23:05
Нет. Ты не прав. Почитай про одно- и двусвязные списки! Массив и связной список - это разные вещи!
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
04.10.2011, 23:05
Не важной какой тип имеет массив. Массив как был непрерывной областью памяти, так он им и останется. Нельзя взять и отвязать из массива какой-то элемент.
Наглядно в памяти(виртуальной памяти) выглядит это так( хотя может не совсем так):
массив целых чисел: {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  [ТС]
Иными словами, мне нужно удалить элемент массива с определенным номером вообще. В принципе, можно объявить еще одну переменную типа List, с ее помощью поместить выбранный элемент на последнее место, а последний элемент на место того, который мы собираемся удалить. А потом на печать в цикле выдать на 1 элемент меньше.

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

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

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

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

* и не надо больше про троллей, ок!?
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.10.2011, 00:03  [ТС]
lazybiz, хорошо. Как сделаю, сразу выложу. Смысл в том, что я элемент из массива не удаляю, а помещаю его в конец и выдаю на печать все элементы, кроме последнего. Т.о., получается, что этого элемента нет, но только "визуально".
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
05.10.2011, 00:10
BoBaH26, так тебе можно сделать проще! Двигать в конец не надо, надо просто пометить индекс элемента и при выводе не выводить его. Он же все-равно не удаляется! Так же проще
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.10.2011, 00:20  [ТС]
Вообщем, речь идет о массивах. Записи я пока не трогаю. Допустим, надо удалить 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
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
05.10.2011, 00:29
Цитата Сообщение от 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  [ТС]
Спасибо, да не. Я не понял, как реализовать это "пометить", в этом смысле . А вот насчет условия, спасибо. Голова уже не соображает. Завтра буду доделывать. Ну в итоге около 200 строк программного кода будет. Сейчас пока 150, я ошибся немного.

Добавлено через 1 минуту
Ну, плюс там много однотипных строк, где я обрабатываю сами записи.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
05.10.2011, 00:39
Я рад что трольбь смог тебе помочь)))
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.10.2011, 00:42  [ТС]
lazybiz, ну извини, просто мне сначала так показалось, просто ты в теме "рандом числа" писал про то, что ему болт класть, способ мой критиковал, а сам ничего на тот момент не предложил. Ну ладно, забыли. Кстати, так с условием гораздо проще, если я захочу сделать функцию, тем более. Мой способ слишком сложен и не универсален. Но все ж работает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.10.2011, 00:42
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru