PDA

View Full Version : ثبت زمان در C



maryamm87
یک شنبه 10 آذر 1387, 16:24 عصر
سلام دوستان
ازتون خواهش می کنم بهم بگید چه طوری می شه زمان سیستم رو در یه متغیر ذخیره کرد و سپس در فاصله زمانی دیگه ای زمان رو دوباره در متغیری دیگر ذخیره کرد و اختلاف این دو زمان رو محاسبه کرد؟
خواهش میکنم کمکم کنیددددددددددد:گریه:

SamaPic
یک شنبه 10 آذر 1387, 22:56 عصر
با سلام خدمت دوست عزيز.
اگر من برنامه ي زير رو براتون مي گذارم .
در دو زمان متفاوت دريافت كنيد.





#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
main:
system("Time/T");
getch();
}


اگر اين نبو د كمي بيشتر توضيح دهيد تا بفهميم در چه ضمينه اي و چه طور برنامه اي مي خواهيد.
اگر هم اين بود و سوالي داشتين بگوييد توضيح دهم.
خدانگهدار.

Nima_NF
دوشنبه 11 آذر 1387, 01:02 صبح
اگر از کامپایلر های جدید تحت ویندوز استفاده می کنید و می خواهید زمان اجرای مثلا یک کد را بررسی کنید (تا اندازه های میکرو ثانیه) می توانید از API ها برای این کار استفاده کنید:



#include "windows.h"

__int64 freq = 0;
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);


__int64 startTime = 0;

QueryPerformanceCounter((LARGE_INTEGER*)&startTime);


//----------------
// your codes here
//----------------

__int64 currTime = 0;
QueryPerformanceCounter((LARGE_INTEGER*)&currTime);

double DeltaTime = (currTime - startTime) / freq;



در کامپایلر هایی مثل gcc و امثال آن به جای int64__ می توانید از long long و مشابه آن استفاده کنید. یا از همان int معمولی استفاده کنید.

Salar Ashgi
دوشنبه 11 آذر 1387, 16:37 عصر
سلام ، من کد زیر رو تو Borland C++ Ver 5.02 نوشتم ، امیدوارم مفید بوده باشه !!!


#include <iostream>
#include <conio>
#include <time>
int main(){
char a[9];
_strtime(a);
cout<<a;
getch();
}

توضیح اینکه : چون زمان به شکل مثلا 12:23:56 است ، خودش از 8 کاراکتر تشکیل شده

و یک کاراکتر هم برای کاراکتر NULL انتهای رشته ، پس سایز آرایه میشه 9 !!!!

موفق و پیروز باشید !!!

mehdi.mousavi
دوشنبه 11 آذر 1387, 17:54 عصر
سلام دوستان
ازتون خواهش می کنم بهم بگید چه طوری می شه زمان سیستم رو در یه متغیر ذخیره کرد و سپس در فاصله زمانی دیگه ای زمان رو دوباره در متغیری دیگر ذخیره کرد و اختلاف این دو زمان رو محاسبه کرد؟
خواهش میکنم کمکم کنیددددددددددد:گریه:

سلام.
شما میتونید برای بدست آوردن اختلاف زمانی مورد نظرتون از GetTickCount استفاده کنید. این تابع، مقدار زمان سپری شده از هنگامیکه ویندوز Start شده رو به میلی ثانیه نشون میده. در نتیجه، کافیه تا در ابتدای کد GetTickCount رو بگیرید، کاری که میخواهید رو انجام بدید، و مجددا GetTickCount رو فراخوانی کنید. اختلاف نتیجه فراخوانی دوم از اولی، میشه مدت زمانی که طول کشیده تا اون تیکه کد اجرا بشه (به میلی ثانیه).

mehdi.mousavi
دوشنبه 11 آذر 1387, 18:02 عصر
اگر از کامپایلر های جدید تحت ویندوز استفاده می کنید و می خواهید زمان اجرای مثلا یک کد را بررسی کنید (تا اندازه های میکرو ثانیه) می توانید از API ها برای این کار استفاده کنید:



__int64 freq = 0;
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);


در کامپایلر هایی مثل gcc و امثال آن به جای int64__ می توانید از long long و مشابه آن استفاده کنید. یا از همان int معمولی استفاده کنید.




سلام.
روش صحیح نوشتن کد فوق، این هستش:



LARGE_INTEGER freq = {NULL};
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);


به عبارت دیگه، باید متغیر freq رو از نوع LARGE_INTEGER تعریف کنید. متوجه نمیشم چرا اینکارو نکردید.