یک برنامه به زبان C++ بنویسید که یک ماتریس عددی NxN از نوع double را از ورودی بخواند و در هر سطر عنصر بزرگ‌ترین و کوچک‌ترین را با استفاده از std::swap جابجا کند و سپس ماتریس حاصل را چاپ کند.

14.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:35

0.0

ماتریس را با std::vector> نگه دارید، برای هر سطر با یک پیمایش اندیس‌های min و max را پیدا کنید و با استفاده از std::swap (در هدر ) عناصر را جابجا کنید. به خاطر مقیاس‌های بزرگ در محاسبات عددی و HPC از double استفاده کنید و برای سرعت I/O می‌توانید ios::sync_with_stdio(false) و cin.tie(nullptr) را فعال کنید؛ در پیاده‌سازی به پیچیدگی زمانی O(N^2) و جلوگیری از کپی‌های غیرضروری توجه کنید.

توسط پژوهشگر در 198 روز قبل ساعت 01:35
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 198 روز قبل ساعت 01:36

برای پیاده‌سازی، بهتر است از std::vector<std::vector<double>> با reserve و اندازه‌دهی اولیه استفاده کنید تا از تخصیص‌های مکرر جلوگیری شود. برای یافتن اندیس‌های min و max در هر سطر می‌توانید از پیمایش دستی یا توابع std::minmax_element استفاده کنید و سپس با std::swap مقادیر را جابجا کنید؛ اگر min و max یکسان یا در یک اندیس باشند نیازی به swap نیست. حتما ios::sync_with_stdio(false) و cin.tie(nullptr) را فعال کنید تا I/O سریع شود و از پاس دادن مقادیر به‌صورت ارجاع جلوگیری کنید تا کپی‌های غیرضروری نداشته باشید. پیچیدگی زمانی کلی O(N^2) خواهد بود و بهتر است برای مقدارهای NaN یا مقیاس‌های بسیار بزرگ چک‌های لازم را لحاظ کنید.

گزارش

1 پاسخ

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

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