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

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




نمايش نتايج 1 به 7 از 7

نام تاپيک: ميلي ثانيه ميلي ثانيه

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Nov 2010
    پست ها
    90

    11 ميلي ثانيه ميلي ثانيه

    سلام دوستان
    کسی میدونه چجوری میشه میلی ثانیه میلی ثانیه به یه عدد اضافه کرد و ان را در زبان سی نشون داد؟؟؟
    مثلا در کرنومتر میلی ثانیه میلی ثانیه اضافه میشه
    خودم با دستورsleep نوشتم ولی اون مقدار صحیح قبول میکنه نه مقدار اعشاری...
    ایا تو سی دستور delay کاربرد داره؟؟؟
    ایا دستور دیگری وجود داره میلی ثانیه میلی ثانیه به یه عدد اضافه کنه؟؟؟
    با تشکر از دوستان

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

    پيش فرض

    دستور sleep میلی ثانیه میگیره، ثانیه که نمیگیره...

  3. #3
    پروفشنال afceaglee2013's Avatar
    تاريخ عضويت
    Jun 2009
    پست ها
    708

    پيش فرض

    sleep ثانیه میگیره .. در اکثر زبان ها اینجوریه .. حالا شاید ورژنی که شما استفاده میکنی فرق داره

    ---
    احتمالا شما از توربو سی 4.5 استفاده میکنید که delay رو نمیشناسه به هر حال این کد تابع delay رو با استفاده از هیدر time.h شبیه سازی کرده و میتونید به تابع ssleep ورودی میلی ثانیه بدید ..
    /* sleep example */

    #include <time.h>
    #include <stdio.h>
    void ssleep(unsigned int mseconds)
    {
    clock_t goal = mseconds*CLK_TCK/1000 + clock();
    while (goal > clock());
    }
    int main(void)
    {
    int i;

    for (i=1; i<5; i++)
    {
    printf("Sleeping for %d seconds\n", i);
    ssleep(1000);
    }
    return 0;
    }

  4. #4
    داره خودمونی میشه
    تاريخ عضويت
    Nov 2010
    پست ها
    90

    پيش فرض

    sleep ثانیه میگیره .. در اکثر زبان ها اینجوریه .. حالا شاید ورژنی که شما استفاده میکنی فرق داره

    ---
    احتمالا شما از توربو سی 4.5 استفاده میکنید که delay رو نمیشناسه به هر حال این کد تابع delay رو با استفاده از هیدر time.h شبیه سازی کرده و میتونید به تابع ssleep ورودی میلی ثانیه بدید ..
    /* sleep example */

    #include <time.h>
    #include <stdio.h>
    void ssleep(unsigned int mseconds)
    {
    clock_t goal = mseconds*CLK_TCK/1000 + clock();
    while (goal > clock());
    }
    int main(void)
    {
    int i;

    for (i=1; i<5; i++)
    {
    printf("Sleeping for %d seconds\n", i);
    ssleep(1000);
    }
    return 0;
    }
    دوست عزیز
    من از توربو سی 5.2 استفاده می کنم
    با استفاده از هیدر time.h دستور delayو ssleep اعلام میکنه که نمی تونه صدا کنه
    اگه من بخوام یه نوشته رو یک دهم ثانیه نشون بدم الگوریتمش چی میشه؟؟
    میشه در مورد کد زیر یکم توضیح بدی؟؟؟
    void ssleep(unsigned int mseconds)
    {
    clock_t goal = mseconds*CLK_TCK/1000 + clock();
    while (goal > clock());
    }

  5. #5
    داره خودمونی میشه
    تاريخ عضويت
    Nov 2010
    پست ها
    90

    پيش فرض

    دوست عزیز میشه در مورد تابع زیر یکم توضیح بدی؟؟؟

    void ssleep(unsigned int mseconds)
    {
    clock_t goal = mseconds*CLK_TCK/1000 + clock();
    while (goal > clock());
    }

  6. #6
    پروفشنال afceaglee2013's Avatar
    تاريخ عضويت
    Jun 2009
    پست ها
    708

    پيش فرض

    تابع clock() تعداد تیک هایی که از اجرای برنامه میگذره رو نشون میده .. تعداد تیک ها (پالس ها) بستگی به ورژن برنامه داره که در سی های تحت داس 12 و در سی های تحت ویندوز 1000 هستش
    ثابت CLK_TCK که در هیدر time.h وجود داره همون تعداد پالس ها در ثانیه رو در خودش داره
    مقداری که ما دارم بر حسب میلی ثانیه س و باید تبدیل به پالس کنیم قبل از اینکه تبدیل به پالس کنیم میلی ثانیه رو تبدیل به ثانیه میکنیم (mseconds/1000) و سپس این مقدار رو که بر حسب ثانیه س با کمک CLK_TCK این مقدار رو تبدیل به پالس میکنیم ( mseconds*CLK_TCK/1000) .. حالا برنامه باید به اندازه ی این مقدار ( mseconds*CLK_TCK/1000) معطل بشه

    تابع clock() در اول فرا خوانی میشه تا معلوم بشه از اول برنامه چند پالس سپری شده و تعداد پالس هایی رو هم که باید سپری بشه به این مقدار اضافه میکنیم و در متغییر goal ذخیره میکنیم .. داخل حلقه ی while مدام بررسی میشه که تعداد پالس ها به مقدار مورد نظر رسیده یا نه ...

  7. #7
    داره خودمونی میشه lordhippo's Avatar
    تاريخ عضويت
    Jul 2010
    محل سكونت
    TeHrAn
    پست ها
    26

    پيش فرض

    استفاده از sleep و delay برا اینکار اشتباهه.
    چون شما فرضاً 1ms صبر کردی، بعد می خوای زمان رو چاپ کنی که خودش وقت میگیره. اینجوری مثلاً بین هر دو تا چاپ 1.2ms ( خیلی اغراق کردم ) زمان میگذره، در حالی که انتظار شما 1ms بوده. اینجوری بعد 10 دقیقه زمانی که برنامه شما میگه گذشته با زمان سپری شده واقعی خیلی فرق پیدا میکنه.
    بجای sleep از clock یا time استفاده کن تا مقدار مطلق ( absolute ) زمان رو بگیری و چاپ کنی.
    حالا می تونی با یه delay ه یه میلی ثانیه این کارو انجام بدی.
    مثلاً:
    ...
    while ( ... )
    {
    sleep ( 1 )
    cout << time_ms ( );
    }
    ...

Thread Information

Users Browsing this Thread

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

User Tag List

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

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