C++Builder
Начало
Форум
Помощь
Войти
Регистрация
C++Builder
>
Forum
>
Вопросы программирования
>
Общие вопросы программирования в C++Builder
>
Конструктор\деструктор
Страниц: [
1
]
Вниз
Печать
Автор
Тема: Конструктор\деструктор (Прочитано 1701 раз)
Алиса
новенький
Сказали спасибо: +0/-0
Offline
Сообщений: 2
Конструктор\деструктор
«
:
21 Октябрь 2009, 21:17:47 »
Класс Time описан в отдельном заголовочном файле,надо записать эту же прогу ,но используя конструктор и деструктор ,не выходит((
// lr_2.cpp
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "time1.h"
int main(int argc, char* argv[])
{
Time t;
t.set_time();
t.print_time();
t.add_hour();
t.print_time;
t.time_razn();
return 0;
}
class Time
{
protected:
int h;
int m;
int s;
public:
void set_time()
{
printf("Count hour (0-23):\t");
scanf("%d",&h);
printf("Count min (0-59):\t");
scanf("%d",&m);
printf("Count sec (0-59):\t");
scanf("%d",&s);
}
void print_time()
{
if (h {
if (m {
if(s else printf("\nTime:\t0%d:0%d:%d\n",h,m,s);
}
else
{
if(s else printf("\nTime:\t0%d:%d:%d\n",h,m,s);
}
}
else
{
if (m {
if(s else printf("\nTime:\t%d:0%d:%d\n",h,m,s);
}
else
{
if(s else printf("\nTime:\t%d:%d:%d\n",h,m,s);
}
}
}
void add_hour()
{
int hh;
printf("Vvedite count add hours:\n");
scanf("%d",&hh);
h+=hh;
print_time();
}
void time_razn()
{
int hh,mm,ss;
puts("Raznost=Time2-Time1");
puts("Time1:");
set_time();
print_time();
hh=h;
mm=m;
ss=s;
puts("Time2:");
set_time();
print_time();
printf("Raznost=%d:%d:%d\n",h-hh,m-mm,s-ss);
}
};
Записан
ChikenpUH
Участник
Сказали спасибо: +11/-5
Offline
Сообщений: 296
Re: Конструктор\деструктор
«
Ответ #1 :
21 Октябрь 2009, 23:58:27 »
ну так добавь в паблик конструктор
Time(); и код
Код
Time
::
Time
(
)
{
set_time
(
)
;
print_time
(
)
;
add_hour
(
)
;
print_time
;
time_razn
(
)
;
}
и эти строки убери из кода программы
это требовалось?
деструктор тут не нужен, ибо память не выделяется
«
Последнее редактирование: 22 Октябрь 2009, 13:04:57 от ChikenpUH
»
Записан
zema
Участник
Сказали спасибо: +1/-0
Offline
Сообщений: 4
Re: Конструктор\деструктор
«
Ответ #2 :
22 Октябрь 2009, 14:09:52 »
не понятна задача,
конструктор инициализирует объект класса(то есть его данные). В данном случае данные это
int h;
int m;
int s;
их надо обнулить.
Time() : h(0), m(0), s(0)
{}
кстати они объявлены как protected: не принципиально, но здесь логичнее сделать private:
метод void time_razn() тоже какой-то нелогичный
он должен определять разницу между ДВУМЯ временами(то есть между двумя объектами типа Time)
то есть примерно так
Time t1;
Time t2;
...
print_time_razn(t1, t2);
то есть он не является методом класса, а просто ф-ия(глобальная).
если хотите совсем красиво можно в классе определить оператор вычитания, но думаю это еще вам рано
Предлагаю такое объявлени класса Time ( реализацию пишите сами )
class Time
{
public:
Time() : h(0), m(0), s(0) // конструктор по умолчанию
{}
void print(); // бывший print_time()
void input(); // бывший set_time()
void addHour(int dh);
// методы доступа к часам минутам секундам
int h() const {return h;};
int m() const;
int s() const;
private:
int h;
int m;
int s;
};
void print_time_razn(const Time & t1, const Time & t2)
{
printf("Raznost=%d:%d:%d\n",t1.h()-t2.h(),t1.m()-t2.m(), t1.s()-t2.s());
}
и тогда у вас
main()
{
Time t1;
ti.input();
t.print();
Time t2;
t2.input();
t2.print();
print_time_razn(t1, t2);
}
Записан
Алиса
новенький
Сказали спасибо: +0/-0
Offline
Сообщений: 2
Re: Конструктор\деструктор
«
Ответ #3 :
23 Октябрь 2009, 00:06:34 »
Спасибо большое,особенно за простоту ответов )))
Записан
Страниц: [
1
]
Вверх
Печать
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Вопросы программирования
-----------------------------
=> Общие вопросы программирования в C++Builder
=> Программирование с FMX
=> Работа с базами данных в C++Builder
=> Windows API
=> Технологии COM/DCOM, ActiveX
=> Аспекты и идеология профессиональной разработки ПО
=> Компьютерное железо и системное администрирование
=> студенческий городок
-----------------------------
Обсуждение материалов на сайте
-----------------------------
=> Обсуждений статей на сайте
=> Обсуждение материалов из файлового архива
=> Компоненты сторонних разработчиков к С++Builder
-----------------------------
Работа сайта и новости
-----------------------------
=> Ищу/предлагаю работу
=> Новости из мира программирования
=> Новости - события календаря
=> Голосования
=> Компьютерный юмор и приколы
=> Работа сайта
=> Флейм
-----------------------------
FAQ - частозадаваемые вопросы/ответы
-----------------------------
=> FAQ, общие вопросы, посвящённые C++Builder
=> FAQ, вопросы по базам данных
=> FAQ, вопросы по компонентам
Загружается...