Omid707
پنج شنبه 22 مهر 1389, 20:20 عصر
با سلام
قبل از همه چیز بگم من تو سایت سرچ کردم و چند تا کد تایمر پیدا کردم ولی چون منظور تمرین رو نفهمیدم بدردم نمیخوره:متفکر:
تمرین از کتاب دیتل:
کلاسTime را به نحوی اصلاح کنید که حاوی تابع عضو tick باشد،تا زمان ذخیره شده در شی Time را در هر ثانیه افزایش دهد.بایستی شی time همیشه در وضعیت پایدار باقی بماند.برنامه ای بنویسید که تابع عضو tick را در حلقه ای که زمان را در فرمت استاندارد در هر بار تکرار چاپ میکند،تست نماید تا از عملکرد صحیح آن مطمئن شویم.حتما حالات زیر تست شوند:
a)ورود به دقیقه بعد
b)ورود به ساعت بعد
c)ورود به روز بعد(یعنی 11:59:59PM به 12:00:00AM)
مخصوصا قسمت قرمز رنگ که من متوجه خواسته جناب دیتل نشدم:گیج:
آیا منظورش اینه که بعد از کامپایل کد و بازشدن صفحه سیاه کنسول،بعد از گذشت هر ثانیه، زمانیکه در شی ذخیره شده و داره نمایش میده رو افزایش بده؟
فایل سرآیند:
#ifndef TIME_H
#define TIME_H
class Time
{
public:
Time(int=0,int=0,int=0);
void setTime(int,int,int);
void setHour(int);
void setMinute(int);
void setSecond(int);
int getHour();
int getMinute();
int getSecond();
void PrintStandard();
private:
int Hour;//0-23
int Minute;//0-59
int Second;//0-59
};
#endif
تعریف کلاس:
#include <iostream>
using std::cout;
#include <iomanip>
using std::setfill;
using std::setw;
#include "Time.h"
Time::Time(int h, int m, int s)
{
setTime(h,m,s);
}
void Time::setTime(int h, int m, int s)
{
setHour(h);
setMinute(m);
setSecond(s);
}
void Time::setHour(int h)
{
Hour =( ( h>=0 && h<24)? h : 0 );
}
void Time::setMinute(int m)
{
Minute =( ( m>=0 && m<60)? m : 0 );
}
void Time::setSecond(int s)
{
Second =( ( s>=0 && s<60)? s : 0 );
}
int Time::getHour()
{
return Hour;
}
int Time::getMinute()
{
return Minute;
}
int Time::getSecond()
{
return Second;
}
void Time::PrintStandard()
{
cout<<setfill('0')<<setw(2)
<<( (getHour() == 0)||(getHour() == 12)? 12 : getHour()%12 )<<":"
<<setw(2)<<getMinute()<<":"<<setw(2)<<getSecond()<<( Hour<12 ?" AM":" PM");
}
کد سرویس گیرنده:
#include <iostream>
using std::cin;
#include "Time.h"
int main()
{
Time a(4,36,25);
a.PrintStandard();
return 0;
}
قبل از همه چیز بگم من تو سایت سرچ کردم و چند تا کد تایمر پیدا کردم ولی چون منظور تمرین رو نفهمیدم بدردم نمیخوره:متفکر:
تمرین از کتاب دیتل:
کلاسTime را به نحوی اصلاح کنید که حاوی تابع عضو tick باشد،تا زمان ذخیره شده در شی Time را در هر ثانیه افزایش دهد.بایستی شی time همیشه در وضعیت پایدار باقی بماند.برنامه ای بنویسید که تابع عضو tick را در حلقه ای که زمان را در فرمت استاندارد در هر بار تکرار چاپ میکند،تست نماید تا از عملکرد صحیح آن مطمئن شویم.حتما حالات زیر تست شوند:
a)ورود به دقیقه بعد
b)ورود به ساعت بعد
c)ورود به روز بعد(یعنی 11:59:59PM به 12:00:00AM)
مخصوصا قسمت قرمز رنگ که من متوجه خواسته جناب دیتل نشدم:گیج:
آیا منظورش اینه که بعد از کامپایل کد و بازشدن صفحه سیاه کنسول،بعد از گذشت هر ثانیه، زمانیکه در شی ذخیره شده و داره نمایش میده رو افزایش بده؟
فایل سرآیند:
#ifndef TIME_H
#define TIME_H
class Time
{
public:
Time(int=0,int=0,int=0);
void setTime(int,int,int);
void setHour(int);
void setMinute(int);
void setSecond(int);
int getHour();
int getMinute();
int getSecond();
void PrintStandard();
private:
int Hour;//0-23
int Minute;//0-59
int Second;//0-59
};
#endif
تعریف کلاس:
#include <iostream>
using std::cout;
#include <iomanip>
using std::setfill;
using std::setw;
#include "Time.h"
Time::Time(int h, int m, int s)
{
setTime(h,m,s);
}
void Time::setTime(int h, int m, int s)
{
setHour(h);
setMinute(m);
setSecond(s);
}
void Time::setHour(int h)
{
Hour =( ( h>=0 && h<24)? h : 0 );
}
void Time::setMinute(int m)
{
Minute =( ( m>=0 && m<60)? m : 0 );
}
void Time::setSecond(int s)
{
Second =( ( s>=0 && s<60)? s : 0 );
}
int Time::getHour()
{
return Hour;
}
int Time::getMinute()
{
return Minute;
}
int Time::getSecond()
{
return Second;
}
void Time::PrintStandard()
{
cout<<setfill('0')<<setw(2)
<<( (getHour() == 0)||(getHour() == 12)? 12 : getHour()%12 )<<":"
<<setw(2)<<getMinute()<<":"<<setw(2)<<getSecond()<<( Hour<12 ?" AM":" PM");
}
کد سرویس گیرنده:
#include <iostream>
using std::cin;
#include "Time.h"
int main()
{
Time a(4,36,25);
a.PrintStandard();
return 0;
}