Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2009, 17:57   #1
Serror
Пользователь
 
Регистрация: 03.10.2009
Сообщений: 19
По умолчанию Удаление/добавление.

Не знаю в какой теме писать.В программе надо сделать удаление и добавление препаратов на складе.Удаление по ID товара.
Код:
class store
{
private:
int ID                   ID склада.
int FarmCount        Количество товара.
public:
int*FarmIDs           ID товара.
LPSTR*FarmNames  Название товара.
int DelFarm(int ID)
int AddFarm()
};
Допустим мы вводим ID товара который мы должны удалить.Ведётся поиск и если он совпадает с с ID в int*FarmIDs.То происходит удаление.Но с помощью какой команды происходит удаление я не знаю.
Код:
int store::DelFarm(int ID)
{
for(i=0;i<FarmIDs;i++)
{
if(i==ID)
{
По идеи тут должен удаляться товар по нашему ID.Как это происходит?
А с добавлениям нового препарата у меня даже нет никаких идей.Мы вводим имя нового товара который хотим добавить.Как происходит добавление?Не могли бы вы объяснить принцип работы добавления и дописать код удаления/добавления.Так как я пытаюсь разобраться в индивидуально данном мне задание мне нужно именно через int.
Serror вне форума Ответить с цитированием
Старый 18.10.2009, 22:08   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

а как у вас организовано хранение информации о товарах? массив, иль динамическая структура?

Цитата:
int *FarmIDs; //ID товара.
а чем вас не устраивает int FarmIDs ? ведь для указателя все равно надо будет выделять память.
counter вне форума Ответить с цитированием
Старый 19.10.2009, 00:32   #3
Serror
Пользователь
 
Регистрация: 03.10.2009
Сообщений: 19
По умолчанию

Меня int FarmIDs всем устраивает.Просто мне так условие поставили.
Код:
class store
{
private:
int ID;                   ID склада.
int FarmCount;        Количество товара.
public:
int*FarmIDs;           ID товара.
LPSTR*FarmNames;  Название товара.
int DelFarm(int ID);
int AddFarm();
};
Всё это воспринимается как данность.Ни менять это ни спорить с этим я не могу.Мне сказали что у нас такой код вот и всё.

Последний раз редактировалось Serror; 19.10.2009 в 05:35.
Serror вне форума Ответить с цитированием
Старый 19.10.2009, 09:41   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Serror Посмотреть сообщение
Допустим мы вводим ID товара который мы должны удалить.Ведётся поиск и если он совпадает с с ID в int*FarmIDs.То происходит удаление.Но с помощью какой команды происходит удаление я не знаю.
Код:
int store::DelFarm(int ID)
{
for(i=0;i<FarmIDs;i++)
{
if(i==ID)
{
По идеи тут должен удаляться товар по нашему ID.Как это происходит?
Неа. Не должно тут ничего удаляться. Да и цикл левый какой-то.
Вообще класс store спроектирован неправильно. Нужно выделять отдельный класс farm и в store хранить уже farm'ы, а не кучу отдельных динамических массивов заводить. Это не труъ ООП какое-то.
Итак, стоит задача написать свой std::vector (почему готовый вектор не используется - тоже является для меня вопросом). Так вот. Нужно:
1) При удалении товара, смещать хвост массива влево, чтобы затереть удаленный элемент
2) Так же нужно как-то хранить выделенный объем памяти под товар. Удалили товар и еще одно вакантное место освободилось, значит можно добавить новый товар без перевыделения памяти
3) При добавлении объекта, выделенная память может быть вся занята и нужно будет выделить новый кусок памяти побольше и слить туда весь товар
4) Не нужно забывать синхронизировать элементы массивов FarmIDs и FarmNames, т.е. при удалении и добавлении элементов будет двойная работа по перевыделению памяти под эти 2 массива.
В общем, почитайте как в STL устроен vector и реализуйте по тому же принципу.
Хотя, если класс store менять совсем нельзя, то придётся на каждый чих память перевыделять, т.к. хранить объем выделенной памяти просто будет негде.
ЗЫ. Посмотреть бы на препода, который такое задаёт. Приучает к плохому проектированию чтоли...
ЗЫ2. Это конечно если я правильно понял, что store - это склад, FarmIDs - массив идентификаторов товара на складе, а FarmNames - массив названий товара.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление и удаление записей из БД (Access) a_n_n_a БД в Delphi 26 02.01.2016 18:13
Добавление (удаление) строк в таблице inside9 Microsoft Office Excel 29 01.01.2012 22:31
Удаление и добавление строки. Serror Общие вопросы C/C++ 6 11.10.2009 18:59
Удаление/добавление полей runtime /Denis/ БД в Delphi 1 06.08.2008 22:35
Добавление и удаление записей в Listview Scorpeon Компоненты Delphi 0 08.06.2007 23:09