برنامه ای که عددی راازورودی دریافت کند وتعیین کندکه ایا مربع کامل است یاخیر
Printable View
برنامه ای که عددی راازورودی دریافت کند وتعیین کندکه ایا مربع کامل است یاخیر
الگوریتم 1
میتونید اول جذر رو به دست بیارید و بعد ببینید آیا مجذور یک عدد طبیعی هست یا نه.
مثلاً عدد 36 میشه 6، که یک عدد طبیعی هست.
ولی اگه از 37 جذر بگیریم، جواب اعشاری میشه؛ پس 37 مربع کامل نیست.
برای بررسی طبیعی بودن عدد از مقایسه آن با براکت (جزءصحیح) استفاده میکنیم.
اگر جزء صحیح یک عدد با خودش برابر باشه، اون عدد طبیعی هست.دستور جزء صحصیح : floor
مثلاً اگه 5.5 رو با جزء صحیحش مقایسه کنیم، با هم برابر نیستن. چون جزء صحیحش میشه 5 !
یعنی: [5.5] ≠ 5.5
الگوریتم 2
اما روش بالا مثل چرخوندن لقمه دور سر هست. بنابر این شما فایل txt زیر رو دانلود کنید.
برنامه به زبان پاسکال هست اما الگوریتمش فرق نمیکنه. پس شما همین رو به C++ تغییر بدید.
میخواستم اینجا کپی کنم متنش به هم میریخت!
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] توضیح:
تعریف متغیرهای i , s ,n
دریافت عدد n
تشکیل حلقه while از i=1 تا زمانی که i * i <= n باشه. ( i شمارنده حلقه است)
البته به نظرم میتونید به جای n ـ، n/2 هم قرار دهید.
s=i*i
در هر مرحله بررسی میشه که آیا s با عدد ورودی مساوی هست یا نه
اگر مساوی بود یعنی مربع کامل است و گرنه میره مرحله بعد؛ مگر اینکه i * i >= n باشه.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
الگوریتم اول درسته. میشه از تابع sqrt استفاده کرد و بررسی کرد که جواب عدد طبیعی هست یا نه. برای این کار میتونید از تابع floor استفاده کنید یا عدد حاصل رو تبدیل به int کنید و دوباره به double برگردونیدنقل قول:
الگوریتم دوم هم به قدری نا کارامد و کنده که میشه گفت کاملا اشتباهه.
salam bazam mamnun