یک برنامهٔ C++ بنویسید که با استفاده از std::strtok یک رشتهٔ ورودی شامل اعداد اعشاری جداشده با کاما یا فاصله را تجزیه کند و میانگین، کمینه و بیشینهٔ آن اعداد را محاسبه و چاپ کند.

17.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 03:09

0.0

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

توسط پژوهشگر در 198 روز قبل ساعت 03:09
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 198 روز قبل ساعت 03:10

به یاد داشته باشید که std::strtok محتوای بافر را تغییر می‌دهد و نه‌تنها غیرقابل‌توازی است بلکه باید یک آرایهٔ char قابل تغییر (کپی از std::string) به آن بدهید؛ در برنامه‌های چندنخی از std::strtok_r یا به‌جای آن از std::stringstream یا std::from_chars استفاده کنید. برای تبدیل توکن‌ها از strtod با endptr استفاده کنید تا توکن‌های نامعتبر تشخیص داده شوند و با جداکننده‌های متوالی یا توکن‌های خالی درست برخورد کنید. اگر ورودی شما از کاما به‌عنوان جداکننده استفاده می‌کند ولی سیستم شما از کاما به‌عنوان جداکنندهٔ اعشاری استفاده می‌کند باید پیش از تجزیه، رشته را نرمال‌سازی کنید یا جداکنندهٔ دیگری انتخاب کنید. در ابتدای محاسبات برای مقداردهی کمینه/بیشینه از numeric_limits<double>::infinity() استفاده کنید و در صورت نبود عدد پیام مناسب چاپ کنید.

گزارش

1 پاسخ

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

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