یک برنامهٔ C بنویسید که با استفاده از تابع atexit از محاسبهٔ عدد π را به کمک قاعدهٔ ذوزنقهای (انتگرالگیری عددی) انجام دهد و پس از پایان برنامه نتیجهٔ نهایی و زمان اجرا را چاپ کند.
3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:22 0.0
برای حل، تابعی void بدون آرگومان بسازید که توسط atexit ثبت شود و در آن نتیجهٔ محاسبهشده و زمان اجرا را چاپ (و در صورت نیاز حافظهٔ اختصاصیافته را آزاد) کند؛ مقدار π را در متغیر سراسری یا استاتیک ذخیره کنید تا تابع ثبتشده بتواند به آن دسترسی داشته باشد. در main تعداد گامها را مشخص و طول گام را محاسبه، حلقهٔ انتگرالگیری ذوزنقهای را با نوع double اجرا و زمانسنجی را با توابع مناسب (مثلاً clock یا clock_gettime) انجام دهید؛ قبل از خروج برنامه از atexit برای ثبت تابع چاپ استفاده کنید. نکات: تابع ثبتشده توسط atexit باید prototype با void func(void) داشته باشد، از preallocation و کاهش فراخوانیهای تابع داخل حلقه برای بهبود کارایی استفاده کنید و برای مقادیر بزرگ گامها از دقت double بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
ثبت تابع atexit باید قبل از پایان برنامه انجام شود و برای دسترسی به مقدار π از یک متغیر سراسری یا استاتیک استفاده کنید تا خروجی تابع ثبتشده بتواند نتیجه را چاپ کند. برای اندازهگیری دقیق زمان اجرا از clock_gettime با CLOCK_MONOTONIC استفاده کنید تا با گذر زمان و ناپایداری زمانبندی سیستم مشکلی ایجاد نشود. در حلقه انتگرالگیری از پیشتخصیص حافظه و کاهش فراخوانیهای غیرضروری تابع داخل حلقه استفاده کنید و از نوع double برای دقت مناسب بهره ببرید. توجه کنید توابع ثبتشده با atexit به ترتیب معکوس از ثبت شدن اجرا میشوند، پس ترتیب ثبت را در نظر بگیرید.
گزارش