Другие языки программирования и технологии
Класс c++
Помогите написать 3 функции для этого класса, нужно выделить для каждого элемента память динамически. class my{ int y; int m; int d; public: my(){d=0;m=0;y=0} my(int day, int mon, int year){d=day; m=mon; y=year;} void show(){cout << "Today: " << d << "." << m << "." << y << endl;} ...}; ... 1-ая функция добавляет один элемент в список; 2-ая функция удаляет выбранный элемент из списка; 3-ая запись в файл; Очень расчитываю на Вашу помошь!
Сейчас буду тебе мозги кипятить:
class my
{
int y;
int m;
int d;
public:
my(){d=0;m=0;y=0;}
my(int day, int mon, int year){d=day; m=mon; y=year;}
void show(){cout << "Today: " << d << "." << m << "." << y << endl;}
BOOL operator ==(const my &r) { return y == r.y && m == r.m && d == r.d; }
...
};
template<class T>
class ListItem
{
public:
ListItem *pNext;
T* pValue;
};
template<class T>
ListItem<T>* Add(ListItem<T> *&pHead, T *pNew)
{
ListItem<T>* pRet = new ListItem<T>;
pRet->pNext = pHead;
pRet->pValue = pNew;
return pHead = pRet;
}
template<class T>
T* Delete(ListItem<T> *&pHead, T *pDelete)
{
T* pRet = NULL;
ListItem<T> *pTemp, **ppItem = &pHead;
while (pTemp = *ppItem)
{
if (*pTemp->pValue == *pDelete)
{
pRet = pTemp->pValue;
*ppItem = pTemp->pNext;
delete pTemp;
break;
}
ppItem = &pTemp->pNext;
}
return pRet;
}
int main()
{
ListItem<my> *pHead = NULL;
my a(1,2,3), b(4,5,6), c(7,8,9);
Add<my>(pHead, &a);
Add<my>(pHead, &b);
Add<my>(pHead, &c);
my *p = Delete<my>(pHead, &b);
ASSERT(p == &b);
p = Delete<my>(pHead, &c);
ASSERT(p == &c);
p = Delete<my>(pHead, &a);
ASSERT(p == &a);
return 0;
}
class my
{
int y;
int m;
int d;
public:
my(){d=0;m=0;y=0;}
my(int day, int mon, int year){d=day; m=mon; y=year;}
void show(){cout << "Today: " << d << "." << m << "." << y << endl;}
BOOL operator ==(const my &r) { return y == r.y && m == r.m && d == r.d; }
...
};
template<class T>
class ListItem
{
public:
ListItem *pNext;
T* pValue;
};
template<class T>
ListItem<T>* Add(ListItem<T> *&pHead, T *pNew)
{
ListItem<T>* pRet = new ListItem<T>;
pRet->pNext = pHead;
pRet->pValue = pNew;
return pHead = pRet;
}
template<class T>
T* Delete(ListItem<T> *&pHead, T *pDelete)
{
T* pRet = NULL;
ListItem<T> *pTemp, **ppItem = &pHead;
while (pTemp = *ppItem)
{
if (*pTemp->pValue == *pDelete)
{
pRet = pTemp->pValue;
*ppItem = pTemp->pNext;
delete pTemp;
break;
}
ppItem = &pTemp->pNext;
}
return pRet;
}
int main()
{
ListItem<my> *pHead = NULL;
my a(1,2,3), b(4,5,6), c(7,8,9);
Add<my>(pHead, &a);
Add<my>(pHead, &b);
Add<my>(pHead, &c);
my *p = Delete<my>(pHead, &b);
ASSERT(p == &b);
p = Delete<my>(pHead, &c);
ASSERT(p == &c);
p = Delete<my>(pHead, &a);
ASSERT(p == &a);
return 0;
}
Непонятно, что значит "выделить для каждого элемента память динамически"? Т. е. y, m, n хранить динамически? Или, судя по функциям, которые нужно реализовать, нужен какой-то список из класса my, для элементов которого динамически выделять память?
В общем, как обычно, подразумевается что тут местная тусовка телепатов, ну или, как минимум, профессиональных дипломированных гадалок.
P.S. Если "очень раССчитываешь на нашу помошь" (слово "вашу", в данном случае, пишется с маленькой буквы) , то можем ли мы рассчитывать на Ваше (а тут слово "Ваше" пишется с большой!!! ) вознаграждение?
В общем, как обычно, подразумевается что тут местная тусовка телепатов, ну или, как минимум, профессиональных дипломированных гадалок.
P.S. Если "очень раССчитываешь на нашу помошь" (слово "вашу", в данном случае, пишется с маленькой буквы) , то можем ли мы рассчитывать на Ваше (а тут слово "Ваше" пишется с большой!!! ) вознаграждение?
Похожие вопросы
- Доступ к полям другого класса. C# Подробно внутри!
- Для чего нужны статические классы? (C#)
- Есть ли ошибка? Может ли возникнуть? И вообще приемлимо ли? C++ классы
- visual c++(form project) подскажите где там можно создать и описать свой класс? что то не выходит ((
- C++ Классы
- Абстрактные классы в c#
- C++ Классы и Переменные
- проясните по классу в c++ по книге.
- Как в C# инициализировать массив в свойстве класса?
- Создать класс типа круг. C++