در زبان C برنامهای بنویسید که یک رشته حاوی اعداد اعشاری جداشده با کاما را با استفاده از تابع strtod تجزیه کرده و مجموع، میانگین و انحراف معیار نمونه را محاسبه و نمایش دهد.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:12 0.0
برای حل، در فایل C هدر stdlib.h را include کنید و با استفاده از تابع strtod و اشارهگری از نوع char* (مثلاً endptr) مقادیر اعشاری را از رشته بخوانید: پس از هر فراخوانی strtod اشارهگر ورودی را به endptr تنظیم کنید و سپس با تنظیم دوباره ptr = endptr تا پایان رشته ادامه دهید. در حلقه مقادیر را در double جمع و تعداد را شمارش کنید، سپس میانگین = مجموع/تعداد و انحراف معیار نمونه را با فرمول sqrt(جمعِ مربعات اختلافها / (تعداد-1)) محاسبه کنید. نکات: قبل از خواندن بررسی کنید endptr==ptr یعنی تبدیل ناموفق بوده، برای اطمینان از دقت از نوع double استفاده کنید و برای ورودیهای بزرگ ممکن است errno==ERANGE را بررسی کنید؛ این روش برای تحلیل عددی و پردازش دادههای علمی مفید است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
مطمئن شوید رشته ورودی با نحوه نمایش اعشار که استفاده میکنید (نقطه یا کاما) سازگار است؛ strtod پیشفرض با نقطه بهعنوان جداکننده اعشار کار میکند و برای استفاده از کاما باید locale را تغییر داده یا کاراکترها را پیشازپردازش به نقطه تبدیل کنید. در هر فراخوانی strtod باید پایانگر endptr را بررسی کنید تا از موفقیت تبدیل مطمئن شوید، سپس ptr را به endptr بازگردانید تا ادامه رشته را پردازش کنید و errno را هم برای تشخیص ERANGE چک کنید. برای دادههای بزرگ، استفاده از الگوریتمهای پایدارتر مانند Welford برای محاسبه واریانس در یکبارعبور میتواند دقت و ثبات عددی بهتری بدهد تا خطای گرد کردن کاهش یابد. همچنین حالتهایی مانند عدم وجود مقدار معتبر یا تقسیم بر صفر را مدیریت کنید تا خروجی قابلاعتماد و پیام خطای مناسب ارائه شود.
گزارش