برنامهای به زبان C++ بنویسید که یک رشتهٔ C-style (آرایهٔ char) از ورودی بگیرد، با استفاده از std::strlen طول آن را محاسبه کند و سپس تعیین نماید که رشته یک عدد صحیح معتبر، یک عدد اعشاری معتبر (با حداکثر یک نقطهٔ اعشاری) یا نامعتبر است؟
0.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:22 0.0
از هدر و تابع std::strlen برای بدست آوردن طول رشته استفاده کنید، سپس با پیمایش کاراکترها (آرایهٔ char) بررسی کنید که کاراکترها تنها شامل ارقام و حداکثر یک علامت نقطهٔ اعشاری و یک علامت اختیاری + یا - در ابتدای رشته باشند؛ رشتهٔ خالی یا رشتهای با کاراکترهای غیرمجاز یا بیش از یک ممیز نامعتبر است. استفاده از توابع کمکی مانند isdigit از مفید است؛ این مسئله شبیه مرحلهٔ تحلیل لغوی در کامپایلرها و همچنین پیشپردازش رشتههای عددی در محاسبات علمی است—مطمئن شوید که شرایط لبهای مثل تنها علامت + یا - و قرارگیری نقطه به درستی کنترل شوند.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
پیشنهاد میکنم هنگام استفاده از isdigit کاراکترها را با unsigned char بهصراحت تبدیل کنید تا از رفتار ناشناخته با مقادیر منفی جلوگیری شود. همچنین از std::strlen برای تعیین طول استفاده کنید و به حالتهای لبه مانند رشتهٔ خالی یا وجود '\0' غیرمنتظره توجه کنید. برای اعتبارسنجی عدد فقط یک نقطهٔ اعشاری مجاز است و علامتهای '+' یا '-' تنها در ابتدای رشته مجازند و باید دستکم یک رقم وجود داشته باشد تا رشته معتبر باشد. اگر میخواهید با فرمتهایی مانند '.5' یا '5.' هم کار کنید، تصمیم طراحی خود را دربارهٔ پذیرش این موارد اضافه کنید.
گزارش