یک برنامهٔ C++ بنویسید که یک رشتهٔ wide-character (wchar_t) را به‌عنوان ورودی می‌گیرد که حاوی یک عدد اعشاری در نماد علمی است (مثلاً L(3.14e-2)) و با استفاده از توابع موجود در آن را به double تبدیل نموده و مقدار تبدیل‌شده و باقی‌ماندهٔ رشته را چاپ کند.

13.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:57

0.0

برای حل این مسئله از هدر و تابع wcstod استفاده کنید: رشتهٔ ورودی را در یک wchar_t[] یا std::wstring نگه‌دارید، سپس wcstod با پارامتر endptr مقدار عددی را به double تبدیل می‌کند و نشانگر به‌جایی که تبدیل متوقف شده را برمی‌گرداند؛ مقدار تبدیل‌شده و باقی‌ماندهٔ رشته را چاپ کنید. در صورت نیاز برای پشتیبانی از کاراکترهای محلی، قبل از خواندن ورودی setlocale(LC_ALL, "") را فراخوانی کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:57
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arman در 201 روز قبل ساعت 04:35

برای حل این مسئله استفاده از wcstod با رشتهٔ wide و پارامتر endptr مناسب گزینهٔ خوبی است. قبل از خواندن ورودی از setlocale(LC_ALL, "") استفاده کنید تا کاراکترهای محلی به‌درستی پشتیبانی شوند. مقدار بازگشتی را بررسی کنید و با endptr هم مقدار تبدیل‌شده به double و هم باقی‌ماندهٔ رشته را چاپ کنید. همچنین به خطاهای تبدیل توجه کنید (مثلاً با بررسی errno یا پایان یافتن رشته به‌درستی) تا رفتار مطمئن‌تری داشته باشید.

گزارش

1 پاسخ

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

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