برنامه‌ای به زبان C++ بنویسید که یک رشتهٔ C-style (آرایهٔ char) از ورودی بگیرد، با استفاده از std::strlen طول آن را محاسبه کند و سپس تعیین نماید که رشته یک عدد صحیح معتبر، یک عدد اعشاری معتبر (با حداکثر یک نقطهٔ اعشاری) یا نامعتبر است؟

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

0.0

از هدر و تابع std::strlen برای بدست آوردن طول رشته استفاده کنید، سپس با پیمایش کاراکترها (آرایهٔ char) بررسی کنید که کاراکترها تنها شامل ارقام و حداکثر یک علامت نقطهٔ اعشاری و یک علامت اختیاری + یا - در ابتدای رشته باشند؛ رشتهٔ خالی یا رشته‌ای با کاراکترهای غیرمجاز یا بیش از یک ممیز نامعتبر است. استفاده از توابع کمکی مانند isdigit از مفید است؛ این مسئله شبیه مرحلهٔ تحلیل لغوی در کامپایلرها و همچنین پیش‌پردازش رشته‌های عددی در محاسبات علمی است—مطمئن شوید که شرایط لبه‌ای مثل تنها علامت + یا - و قرارگیری نقطه به درستی کنترل شوند.

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

پیشنهاد می‌کنم هنگام استفاده از isdigit کاراکترها را با unsigned char به‌صراحت تبدیل کنید تا از رفتار ناشناخته با مقادیر منفی جلوگیری شود. همچنین از std::strlen برای تعیین طول استفاده کنید و به حالت‌های لبه مانند رشتهٔ خالی یا وجود '\0' غیرمنتظره توجه کنید. برای اعتبارسنجی عدد فقط یک نقطهٔ اعشاری مجاز است و علامت‌های '+' یا '-' تنها در ابتدای رشته مجازند و باید دست‌کم یک رقم وجود داشته باشد تا رشته معتبر باشد. اگر می‌خواهید با فرمت‌هایی مانند '.5' یا '5.' هم کار کنید، تصمیم طراحی خود را دربارهٔ پذیرش این موارد اضافه کنید.

گزارش

1 پاسخ

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

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