یک برنامهٔ C بنویسید که با استفاده از تابع atexit از محاسبهٔ عدد π را به کمک قاعدهٔ ذوزنقه‌ای (انتگرال‌گیری عددی) انجام دهد و پس از پایان برنامه نتیجهٔ نهایی و زمان اجرا را چاپ کند.

3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:22

0.0

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

توسط پژوهشگر در 220 روز قبل ساعت 02:22
دسته بندی ها: C for beginner
nima در 220 روز قبل ساعت 09:55

ثبت تابع atexit باید قبل از پایان برنامه انجام شود و برای دسترسی به مقدار π از یک متغیر سراسری یا استاتیک استفاده کنید تا خروجی تابع ثبت‌شده بتواند نتیجه را چاپ کند. برای اندازه‌گیری دقیق زمان اجرا از clock_gettime با CLOCK_MONOTONIC استفاده کنید تا با گذر زمان و ناپایداری زمان‌بندی سیستم مشکلی ایجاد نشود. در حلقه انتگرال‌گیری از پیش‌تخصیص حافظه و کاهش فراخوانی‌های غیرضروری تابع داخل حلقه استفاده کنید و از نوع double برای دقت مناسب بهره ببرید. توجه کنید توابع ثبت‌شده با atexit به ترتیب معکوس از ثبت شدن اجرا می‌شوند، پس ترتیب ثبت را در نظر بگیرید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری