PDA

View Full Version : سوال: تابع زمان در سی پلاس پلاس



kamran_14
شنبه 22 اسفند 1388, 17:45 عصر
سلام
در سی ++ اگه بخواهیم کلمه ی "Hello" را در هر ثانیه چاپ کند برنامه ی آن به این صورت است.




#include<iostream.h>
#include<conio.h>
#include<time.h>
Main()
{
Clrscr();
Time_t t,s;
T=time(0);
S=t+1;
While(1)
{
If (s==t)
{
Cout<<”Hello”;
S=t+1;
}
}
Getch();
}


اگر بخواهیم واحد زمانی کم شود باید چه کار کنیم
مثلا بخواهیم در هر میلی ثانیه کلمه ی "Hello" چاپ شود آن موقع باید چه کار کنیم؟

khafan_bat
شنبه 22 اسفند 1388, 22:03 عصر
تابع delay کارت رو را میندازه ، من قبلا یه ساعت تحت کامپایلر ++TurboC داس نوشتم. از این صفحه میتونی دانلودش کنی :


http://barnamenevis.org/forum/attachment.php?attachmentid=39085&d=1256938316

khafan_bat
شنبه 22 اسفند 1388, 22:20 عصر
سلام . کلاس جالبی بود. یه توضیح کوچولو در رابطه با توابع عضو میتونی بدی ؟

khafan_bat
یک شنبه 23 اسفند 1388, 00:20 صبح
QueryPerformanceCounter(&m_cur چی کار میکنه ؟؟

mehdi.mousavi
یک شنبه 23 اسفند 1388, 00:57 صبح
سلام.
اگر تو ویندوز دارید اینکارو میکنید، خوب با Sleep می تونید به هدفتون برسید. پارامتر تابع Sleep، به میلی ثانیه هستش... تازه WM_TIMER و ... هم وجود داره که میشه از اونها استفاده کرد...

اگر از ویندوز استفاده نمی کنید، می تونید تابع Sleep رو خودتون به این شکل تعریف کنید:


void Sleep(int delay)
{
clock_t end = clock() + delay;
while (clock() < end);
}


البته اینطور کد نوشتن (منظورم مثال دوم هستش) اصلا efficient نیست. در واقع اون حلقه while، قاتل cpu هستش. اما Sleep، واقعا thread رو بحالت تعلیق میبره و تاثیری روی cpu usage نداره.

موفق باشید.

ali zi zeperto
یک شنبه 23 اسفند 1388, 09:31 صبح
تو لینوکس تایع usleep() زمان رو به میکرو ثانیه بر می گردونه.

yaghoott
یک شنبه 30 آذر 1393, 10:14 صبح
سلام
میشه یه توضیح مختصر ومفید در مورد تابع delay در توربو سی پلاس بدید
ممنون