• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

الگوریتم برای تجزیه و تحلیل اعداد

kasra515

کاربر تازه وارد
تاریخ عضویت
25 نوامبر 2005
نوشته‌ها
46
لایک‌ها
0
محل سکونت
IRAN !!!
سلام دوستان ;
من دنبال دو تا الگوریتم هستم که در واقع به دلیل شبیه بودن میشه گفت یک الگوریتم :
1 - الگوریتم برنامه ای که یک عدد صحیح از نوع long را بخواند و مجموع ارقام آن را محاسبه کند
2 - الگوریتم برنامه ای که یک عدد صحیح را بخواند و برگردان آن را محاسبه کند 617=>716
اگه کسی یکیش رو هم بلد بود بنویسه ;)
در ضمن این رو هم بگم که نباید از توابع String استفاده بشه یعنی long به string تبدیل نشهممنون:)
 

miladkdz

کاربر تازه وارد
تاریخ عضویت
30 آگوست 2003
نوشته‌ها
172
لایک‌ها
0
سن
36
محل سکونت
Tehran, Ekbatan
نمیدونم چقدر با تئوری اعداد آشنا هستی ... ولی برای سوال اول میتونی از خواص تقسی به 10 و 100 و 1000 استفاده کنی. برای سوال دوم هم همینطور! یعنی میتونی دونه دونه ارقام رو پیدا کتی بعد عملیات رو انجام بدی. اگه توضیح بیشتر خواستی بگو.
 

kasra515

کاربر تازه وارد
تاریخ عضویت
25 نوامبر 2005
نوشته‌ها
46
لایک‌ها
0
محل سکونت
IRAN !!!
قبل از اینکه این پست رو بدم این روش رو امتحان کردم ؛ اما کامل جواب نگرفتم
مثلا عدد 123 :​
123%10 = 3
123%100 = 23​
حالا چجوری باید 3 رو از 23 حذف کرد
اگه یه مثال کامل بزنید ممنون میشم مخصوصا اگه تعداد ارقام متغیر باشه​
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
به صورت کد مینویسم. واسه اولی همون طور که دوستمون گفتن با تقسیم بر 10 متوالی تا زمانی که عدد صفر نشده تک تک ارقام رو با استفاده از باقیمانده به ده به دست میاریم و رقمی رو که بدست آوردیم رو با تقسیم کردن عدد به 10 حذف میکنیم :
کد:
while (n > 0)
{
    sum += n % 10;
    n /= 10;
}

برای دومی هم... به روش قبلی تک تک ارقام رو بدست میاریم, توی متغیری که برای نتیجه در نظر گرفتیم میریزیم و برای اینکه رقم ها به سمت چپ برن در 10 ضرب میکنیم :
کد:
result = 0;
while (n > 0)
{
    result *= 10;
    result += n % 10;
    n /= 10;
}
فکر کنم کد ها بهتر بتونن منظور رو برسونن تا توضیحی که دادم.متونین با عدد گذاری کد رو بهتر درک کنین. اگه لازمه توضیح بیشتر بدم بگین.
 

miladkdz

کاربر تازه وارد
تاریخ عضویت
30 آگوست 2003
نوشته‌ها
172
لایک‌ها
0
سن
36
محل سکونت
Tehran, Ekbatan
جواب plus درسته!
ساده ترش این میشه که مثلا توی مثال خودت 23 رو که بدست آوردی، 3 رو هم که قبلا داشتی! 3 رو ازش کم میکنی، 20 میمونه بعد 20 رو به 10 تقسیم کن که فقط 2 بمونه!
 
بالا