یک برنامهٔ ساده در C++ بنویسید که یک عبارت ریاضی شامل اعداد اعشاری و عملگرهای +، -، * و / را از ورودی می‌گیرد و با استفاده از std::strtok توکن‌های اعداد و عملگرها را استخراج و هر توکن را در یک خط چاپ کند.

3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:34

0.0

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

توسط پژوهشگر در 202 روز قبل ساعت 02:34
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arman در 202 روز قبل ساعت 09:13

نکته این است که std::strtok رشتهٔ ورودی را تغییر می‌دهد، پس باید رشته را به آرایهٔ char قابل تغییر کپی کنید یا از نسخه‌ای امن‌تر استفاده کنید. هنگام تعریف جداسازها، فضای خالی و عملگرها را در نظر بگیرید تا توکن‌های عددی به درستی از هم تفکیک شوند، خصوصاً با وجود علامت منفی در اعداد. برای تبدیل توکن‌های عددی به مقدار عددی می‌توانید از strtod استفاده کنید تا انواع اعشاری را به دقت پردازش کند. همچنین قبل از فراخوانی strtok باید مطمئن شوید رشته با '\0' پایان می‌یابد و چند جداساز پشت سر هم را به درستی مدیریت کنید تا اجرای پایدار و بدون باگ باشد.

گزارش

1 پاسخ

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

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