یک برنامهٔ ساده در C++ بنویسید که یک عبارت ریاضی شامل اعداد اعشاری و عملگرهای +، -، * و / را از ورودی میگیرد و با استفاده از std::strtok توکنهای اعداد و عملگرها را استخراج و هر توکن را در یک خط چاپ کند.
3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:34 0.0
برای حل این مسئله، رشتهٔ ورودی را به یک آرایهٔ char قابل تغییر تبدیل کنید چون std::strtok روی رشتهٔ ورودی تغییر ایجاد میکند (از هدر یا استفاده کنید). به عنوان جداکنندهها از کاراکترهای فضای خالی و عملگرها استفاده کنید و سپس با فراخوانی متوالی std::strtok توکنها را استخراج کنید؛ اگر لازم بود توکنهای عددی را با strtod/atof به عدد تبدیل کنید. نکتهها: به چند جداساز پشت سر هم، فاصلهها و علامتهای منفی توجه کنید و قبل از استفاده اطمینان حاصل کنید رشتهٔ ورودی خاتمهٔ null دارد—این روش برای پیشپردازش رشتهها در مفسرها/کامپایلرها و نیز تقسیمبندی ورودی برای محاسبات عددی مفید است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته این است که std::strtok رشتهٔ ورودی را تغییر میدهد، پس باید رشته را به آرایهٔ char قابل تغییر کپی کنید یا از نسخهای امنتر استفاده کنید. هنگام تعریف جداسازها، فضای خالی و عملگرها را در نظر بگیرید تا توکنهای عددی به درستی از هم تفکیک شوند، خصوصاً با وجود علامت منفی در اعداد. برای تبدیل توکنهای عددی به مقدار عددی میتوانید از strtod استفاده کنید تا انواع اعشاری را به دقت پردازش کند. همچنین قبل از فراخوانی strtok باید مطمئن شوید رشته با '\0' پایان مییابد و چند جداساز پشت سر هم را به درستی مدیریت کنید تا اجرای پایدار و بدون باگ باشد.
گزارش