در یک برنامهٔ C# لیستی از مقادیر اعشاری که نتایج شبیهسازی علمی یا مقادیر مالی را نشان میدهند دریافت میشود—یک تابع بنویسید که هر مقدار را با Math.Floor به پایین گرد کند و آرایهٔ اعداد صحیح حاصل و جمع کلی آنها را بازگرداند.
8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:30 0.0
برای حل، یک تابع بنویسید که آرایهٔ double را بگیرد، برای هر عنصر از System.Math.Floor استفاده کند (توجه کنید Math.Floor یک double برمیگرداند و برای تبدیل به عدد صحیح باید آن را به int یا long کست کنید)، مقادیر گردشده را در یک لیست/آرایهٔ جدید ذخیره و در نهایت مجموع را محاسبه و بازگردانید. نکتهها: برای مقادیر منفی Math.Floor رفتار متفاوتی با Truncate دارد (مثلاً Math.Floor(-1.2) = -2)، برای آرایههای بزرگ از حلقهٔ for ساده یا در صورت نیاز به عملکرد بالاتر میتوانید PLINQ/Parallel.For را بررسی کنید، و دقت کنید که قبل از کست کردن مقدار، از خروجی Math.Floor استفاده کنید تا از گردش ناخواسته جلوگیری شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که برای هر مقدار اعشاری ابتدا از Math.Floor استفاده کرده و سپس نتیجه را به int/long کَست کنید تا رفتار با Truncate متفاوت شود (مثلاً -1.2 به -2 تبدیل میشود). برای آرایههای بزرگ میتوانید از حلقهٔ for ساده یا Parallel.For/PLINQ استفاده کنید تا کارایی را بهبود دهید، به شرط اینکه مقدار floor شده قبل از تبدیل استفاده شود تا از گردش ناخواسته جلوگیری شود. بهتر است خروجی Math.Floor را در یک آرایهٔ جداگانه نگه دارید و در نهایت جمع کل را محاسبه کنید تا منطق واضح باشد. اگر به صرفهجویی در حافظه نیاز دارید، میتوانید خروجی را در همان آرایهٔ ورودی بازنویسی کنید یا از یک آرایهٔ خروجی مجزا استفاده کنید.
گزارش