PDA

نسخه کامل مشاهده نسخه کامل : تعیین مربع کامل بودن



parisa.hei
18-12-2014, 15:55
برنامه ای که عددی راازورودی دریافت کند وتعیین کندکه ایا مربع کامل است یاخیر

hamed29
19-12-2014, 21:59
الگوریتم 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 باشه.
لینک اصلی ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

V i r u s e r
19-12-2014, 22:47
الگوریتم 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 برگردونید
الگوریتم دوم هم به قدری نا کارامد و کنده که میشه گفت کاملا اشتباهه.

parisa.hei
23-12-2014, 14:27
salam bazam mamnun