تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 15

نام تاپيک: ثانيه شمار

  1. #1
    اگه نباشه جاش خالی می مونه p d's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    قبرستون
    پست ها
    449

    14 ثانيه شمار

    چه طور ميشه يه ثانيه شمار ايجاد كرد ؟

  2. #2
    حـــــرفـه ای sin2x=2sinxcosx's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    2,234

    پيش فرض

    این برنامه رو یا بار امتحان کنین ببینین نتیجه دلخواه شما برآورده میشه .
    اینو من قبلا نوشته بودم . از یه ترفند استفاده کردم که زیاد علمی نیست . ولی هر وقت می بینمش حال می کنم . (!)
    این برنامه ساعت جاری سیستم رو نشون میده تو کنسول که هر لحظه هم حرکت می کنه . یعنی هر ثانیه که می گذره این برنامه هم میره جلو . از هیچ کامپوننت آماده ای استفاده نشده .

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  3. 3 کاربر از sin2x=2sinxcosx بخاطر این مطلب مفید تشکر کرده اند


  4. #3
    اگه نباشه جاش خالی می مونه p d's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    قبرستون
    پست ها
    449

    پيش فرض

    جالبه.
    ولي يه جاهاييش رو سر در نميارم. اگه ميشه if به بعد رو توضيح بديد.

  5. #4
    حـــــرفـه ای sin2x=2sinxcosx's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    2,234

    پيش فرض

    ببینین یه بار time رو بیرون از حلقه while گرفتیم و تو t1 ذخیره کردیم . حالا داخل یه حلقه بی نهایت هم یه بار دیگه time رو می گیریم و در t2 ذخیره می کنیم . سرعت اجرای حلقه while خیلی خیلی زیاده و تو یک ثانیه احتمالا بتونه چند صد بار لوپ بزنه . (مثلا حالا) ما اونقدر داخل حلقه while زمان رو می گیریم و در t2 ذخیره می کنیم که اختلافش با قبلی حدود یک ثانیه بشه . حالا چرا داخل شرط if عدد 1 نذاشتیم و 1.001 گذاشتیم ؟ برای اینکه احتمالش خیلی خیلی پایینه که اختلاف دو مقدار بیاد و یک بشه . پیرامون عدد یک میشه . حالا چرا i و یک نه ؟ برای اینکه این مقدار هر بار یکی افزایش می یابه و باید دفعه بعد دو ثانیه باید اختلاف داشته باشه و دفعه بعد 3 ثانیه و الی آخر بنابراین یه counter گذاشتیم . جالا چرا در 45 ضرب کردیم ؟ تو ایکس پی که من این برنامه رو می نوشتم وقتی به 35 ضرب کردم دیدم یه ساعت اینور و اونور شد . (3.5 همون اختلاف ساعت تهران از لندن است) بنابراین 45 گذاشتم . ولی حالا تو 7 باز هم یه ساعت اینور و اونوره بنابراین اگه برای شما هم همچین مشکلی هست اونو 35 کنین . حالا چرا 3600 رو در 4.5 ضرب نکردم و 360 رو تو 45 ضرب کردم ؟ برای اینکه کامپایلر warning نده . والا هیچ فرقی نداره . داخل شرط if هم به شکل استاندارد زیر در آوردیم که زمان رو با فرمت زیر نشون بده :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    می دونین که (time(0 تابعی هست که تعداد ثانیه های گذشته شده از اول ژانویه سال 1970 میلادی رو به مبدا گرینویچ لندن برمیگردونه .

  6. #5
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Sep 2008
    پست ها
    253

    پيش فرض

    می دونین که (time(0 تابعی هست که تعداد ثانیه های گذشته شده از اول ژانویه سال 1970 میلادی رو به مبدا گرینویچ لندن برمیگردونه .
    به این زمان که نسبت به GMT داده میشه system time می گن.
    برای گرفتن local time که همون ساعت گوشۀ پایین ویندوز هست میشه از APIی
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    استفاده کرد.

  7. این کاربر از CppBuilder2006 بخاطر این مطلب مفید تشکر کرده است


  8. #6
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Sep 2008
    پست ها
    253

    پيش فرض

    یه چیز دیگه. فکر میکنم
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    به خاطر اختلاف ساعت ایرانو انگلیس باشه. اما این اختلاف الآن فکر میکنم 3.5 ساعت باشه نه 4.5 ساعت. چون تا اونجایی که من میدونم GMT یه ساعت عقب یا جلو کشیده نمیشه.
    یه نکته اینه که اگه Windows Update فعال بوده باشه ممکنه نرم افزرای روی ویندوز نصب کنه که اختلاف ساعت ایران روupdate میکنه برای همین ممکنه بعضی ویندوزها اختلاف رو 4.5 ساعت و بعضیا 3.5 ساعت بدونن.
    به همین خاطره که حتما باید از local time استفاده کرد. البته برای timer (که مثل کرونومتر کار میکنه) مشکل زیادی نیست!
    Last edited by CppBuilder2006; 24-11-2009 at 21:40.

  9. #7
    اگه نباشه جاش خالی می مونه IP007's Avatar
    تاريخ عضويت
    May 2009
    محل سكونت
    Esfahan
    پست ها
    482

    پيش فرض

    در اینجور موارد میتوان از تابع Sleep استفاده کرد و در هر لوپ 1000 میلی ثانیه وقفه ایجاد کرد

    تابع sleep در هدر windows.h می باشد

  10. این کاربر از IP007 بخاطر این مطلب مفید تشکر کرده است


  11. #8
    حـــــرفـه ای sin2x=2sinxcosx's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    2,234

    پيش فرض

    یه چیز دیگه. فکر میکنم
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    به خاطر اختلاف ساعت ایرانو انگلیس باشه. اما این اختلاف الآن فکر میکنم 3.5 ساعت باشه نه 4.5 ساعت. چون تا اونجایی که من میدونم GMT یه ساعت عقب یا جلو کشیده نمیشه.
    یه نکته اینه که اگه Windows Update فعال بوده باشه ممکنه نرم افزرای روی ویندوز نصب کنه که اختلاف ساعت ایران روupdate میکنه برای همین ممکنه بعضی ویندوزها اختلاف رو 4.5 ساعت و بعضیا 3.5 ساعت بدونن.
    به همین خاطره که حتما باید از local time استفاده کرد. البته برای timer (که مثل کرونومتر کار میکنه) مشکل زیادی نیست!
    بله اگه دقت کنین توضیح دادم :
    حالا چرا در 45 ضرب کردیم ؟ تو ایکس پی که من این برنامه رو می نوشتم وقتی به 35 ضرب کردم دیدم یه ساعت اینور و اونور شد . (3.5 همون اختلاف ساعت تهران از لندن است) بنابراین 45 گذاشتم . ولی حالا تو 7 باز هم یه ساعت اینور و اونوره بنابراین اگه برای شما هم همچین مشکلی هست اونو 35 کنین .
    می دونم اختلاف ساعت اینور و اونور نمی ره .

  12. #9
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Sep 2008
    پست ها
    253

    پيش فرض

    می دونم اختلاف ساعت اینور و اونور نمی ره.
    من کی گفتم نمی دونید!
    من نقل قول میکنم که راحت تر توضیح بدم نه این که طرف صحبتو مشخص کنم
    ولی اینو که مایکرو سافت اختلاف ساعت ویندوزو طبق قوانین هر کشور update میکنه و ممکنه اختلاف ساعت تغییر کنه همه نمی دونن
    Last edited by CppBuilder2006; 24-11-2009 at 23:25.

  13. #10
    اگه نباشه جاش خالی می مونه p d's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    قبرستون
    پست ها
    449

    پيش فرض

    اينم يه ثانيه شمار خيلي ساده با حلقه تاخيري:

    int y=0,z=0;
    float x;
    while(1){
    for(x=0;x<=32099;x+=0.001);
    clrscr();
    if(y%3==0)
    printf("%d",z++);
    y++;

  14. 2 کاربر از p d بخاطر این مطلب مفید تشکر کرده اند


صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •