یک برنامه C++ بنویسید که یک رشتهی ورودی که یک عبارت ریاضی ساده با توکنهای جداشده با فاصله (اعداد اعشاری و عملگرهای + - * /) است را با استفاده از std::strtok تجزیه کند، اعداد را با strtod تبدیل کرده و محاسبه را از چپ به راست انجام داده و نتیجه نهایی را چاپ کند؟
2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:20 0.0
در C++ از هدرهای (برای std::strtok) و (برای strtod) استفاده کنید؛ توجه داشته باشید که std::strtok رشته را تغییر میدهد پس ابتدا std::string را به یک آرایهٔ char کپی کنید. با قرار دادن جداکننده به صورت فاصله (" ")، در حلقه با strtok ابتدا توکنها را بگیرید و با بررسی اینکه توکن یک عملگر است یا عدد، اعداد را با strtod تبدیل و عملیات را به ترتیب چپ به راست اعمال کنید (بدون اولویتبندی عملگرها برای سادگی). این تمرین نشاندهندهٔ تکنیکهای پایهٔ توکنسازی مورد استفاده در کامپایلرها/مفسرها و پردازش دادههای عددی در محاسبات علمی است؛ نکات مفید: بررسی خطا برای توکنهای نامعتبر و مراقبت از اعداد منفی یا اعشاری.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که strtok رشته را تغییر میدهد، پس باید std::string را به آرایهٔ char کپی کنید. با استفاده از جداکنندهٔ فضای خالی (" ") حلقهٔ strtok توکنها را یکییکی میگیرد و باید تشخیص بدهید که توکن عدد است یا عملگر. برای تبدیل عددها از strtod استفاده کنید و محاسبه را از چپ به راست انجام دهید (بدون اولویتبندی، با نگهداری نتیجه در یک متغیر و بهروزرسانی آن با هر عملیات). خطاها را کنترل کنید و بهخصوص ورودیهای نامعتبر یا برخورد با اعداد منفی/اعشاری را بهدرستی مدیریت کنید.
گزارش