آژانس هواپیماییexchanging

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

شروع موضوع توسط kasra515 ‏18 اکتبر 2007 در انجمن خانواده C++ , C

  1. kasra515

    kasra515 کاربر تازه وارد

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

    miladkdz کاربر تازه وارد

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

    kasra515 کاربر تازه وارد

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

    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;
    }
    
    فکر کنم کد ها بهتر بتونن منظور رو برسونن تا توضیحی که دادم.متونین با عدد گذاری کد رو بهتر درک کنین. اگه لازمه توضیح بیشتر بدم بگین.
     
  5. miladkdz

    miladkdz کاربر تازه وارد

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