یک برنامه C++ بنویسید که یک رشته‌ی ورودی که یک عبارت ریاضی ساده با توکن‌های جداشده با فاصله (اعداد اعشاری و عملگرهای + - * /) است را با استفاده از std::strtok تجزیه کند، اعداد را با strtod تبدیل کرده و محاسبه را از چپ به راست انجام داده و نتیجه نهایی را چاپ کند؟

2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:20

0.0

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

توسط پژوهشگر در 221 روز قبل ساعت 01:20
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arman در 221 روز قبل ساعت 13:40

نکتهٔ کلیدی این است که strtok رشته را تغییر می‌دهد، پس باید std::string را به آرایهٔ char کپی کنید. با استفاده از جداکنندهٔ فضای خالی (" ") حلقهٔ strtok توکن‌ها را یکی‌یکی می‌گیرد و باید تشخیص بدهید که توکن عدد است یا عملگر. برای تبدیل عددها از strtod استفاده کنید و محاسبه را از چپ به راست انجام دهید (بدون اولویت‌بندی، با نگهداری نتیجه در یک متغیر و به‌روزرسانی آن با هر عملیات). خطاها را کنترل کنید و به‌خصوص ورودی‌های نامعتبر یا برخورد با اعداد منفی/اعشاری را به‌درستی مدیریت کنید.

گزارش

1 پاسخ

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

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