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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 17:31   #1
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию Классы С++ (Композиция)

Доброе время суток!
Условие: Класс товары(goods) имеет 4 поля (имя,дата поступления,цена, срок реализации(в днях)). Поле дата вводитса с помощью класса date.
Как это реализовать в плане вложености класса в класс. Я вот написал оба класса если кто то может то поменяйте в тексте проги куда что нада вставить. Задание как я понял на композицию классов. И еще нада реализовать метод выедении даты окончания реализации товара это дата + срок.

Цитата:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
class goods
{
public:
void setgoods(int n, int d, int c, int s)
{name = n; dat = d; cena = c; sr = s;}
void setgoods(const goods &t);
void Display() const;
int name, dat, cena, sr;
};

void goods::setgoods(const goods &t)
{
name = t.name;
dat = t.dat;
cena = t.cena;
sr = t.sr;
}

void goods::Display() const
{
cout <<"Name -"<<name<<" data "<<dat<<" - "<<cena<<" "<<sr;
}

class date
{
public:
void settime(int g, int m, int d)
{god = g; mes = m; day = d;}
void settime(const date &t);
void Display() const;
int god, mes, day;
};

void date::settime(const date &t)
{
god = t.god;
mes = t.mes;
day = t.day;
}

void date::Display() const
{
cout <<"Data -"<<god<<"."<<mes<<"."<<day;
}


int main()
{
clrscr();
date t;
int g,m,d,zn;
printf("Vvedite God - ");scanf("%d",&g);
printf("Vvedite mesayc - ");scanf("%d",&m);
printf("Vvedite cuslo - ");scanf("%d",&d);
cout<<"\n";
t.settime(g,m,d);

t.Display();
cout<<"\n";

getch();

return 0;
}
Помогите пожалуйста доделать. Как сделать эту вложеность
werser вне форума Ответить с цитированием
Старый 01.12.2009, 17:42   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Описание класса date поместите перед описанием goods. В классе goods объявите член типа date...
counter вне форума Ответить с цитированием
Старый 01.12.2009, 17:49   #3
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

class date
{
public:
void settime(int g, int m, int d)
{god = g; mes = m; day = d;}
void settime(const date &t);
void Display() const;
int god, mes, day;
};
class goods
{
public:
void setgoods(int n, date d, int c, int s)
{name = n; dat = d; cena = c; sr = s;}
void setgoods(const goods &t);
void Display() const;
int name, cena, sr;
date dat;
};

Вот так сделал пишет: Illegal structure operation
werser вне форума Ответить с цитированием
Старый 01.12.2009, 17:53   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

для доступа к членам объекта dat используйте оператор . или ->
counter вне форума Ответить с цитированием
Старый 01.12.2009, 17:54   #5
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

И как быть с отем методом? Его в дате вставлять в дате или в товарах? если в дате то как там использовать переменную sr? хотя правда ее в мейне можно присвоить взяв ее с товаров
werser вне форума Ответить с цитированием
Старый 01.12.2009, 17:55   #6
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

Цитата:
для доступа к членам объекта dat используйте оператор . или ->
А можете пожалуйста показать как это выглядеть будет на моем примере?
werser вне форума Ответить с цитированием
Старый 01.12.2009, 18:13   #7
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

это пример ввода данных

Код:
date t;
int g,m,d,zn;
printf("Vvedite God - ");scanf("%d",&t.god);
printf("Vvedite mesayc - ");scanf("%d",&t.mes);
printf("Vvedite cuslo - ");scanf("%d",&t.day);
для инициализации члена dat класса goods передавайте эту переменную (лучше ссылку) в setgoods

Код:
void setgoods(int n,date &d, int c, int s)
{name = n; dat = d; cena = c; sr = s;}
UPD

вообще, для инициализации объекта лучше использовать конструктор

Последний раз редактировалось counter; 01.12.2009 в 18:16.
counter вне форума Ответить с цитированием
Старый 01.12.2009, 18:20   #8
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

counter
А как будит выглядеть ввод данных для товаров в мейне?
и как нада поменять setgoods теперь?
werser вне форума Ответить с цитированием
Старый 01.12.2009, 18:30   #9
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

как будет выглядеть setgoods я вам уже показал, в main вам нужно создать объект типа goods и ввести 3 значения переменных и передать их вместе с date в setgoods
counter вне форума Ответить с цитированием
Старый 01.12.2009, 18:39   #10
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

int main()
{
clrscr();
date t;
goods y;
int g,m,d,zn;
printf("Vvedite God - ");scanf("%d",&t.god);
printf("Vvedite mesayc - ");scanf("%d",&t.mes);
printf("Vvedite cuslo - ");scanf("%d",&t.day);
cout<<"\n";
t.settime(t.god,t.mes,t.day);
t.Display();
y.setgoods(1,t,100,5);
y.Display();
cout<<"\n";

getch();

return 0;
}

Вот так?
werser вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы в C++ Soloma Помощь студентам 2 04.06.2009 21:49
С++ классы KOLYTFR Помощь студентам 1 04.06.2009 19:58
классы в С++ kadaffi Помощь студентам 1 18.11.2008 09:30
Классы Старовъръ Общие вопросы Delphi 4 26.06.2008 17:00