نمایش نتایج 1 تا 6 از 6

نام تاپیک: عوض كردن دو عدد در يك عدد چند رقمي

  1. #1

    عوض كردن دو عدد در يك عدد چند رقمي

    سلام
    يه سوال كوچيك
    اگه بخواهيم اعداد يك عدد چند رقمي را با هم عوض كنيم از چه دستوري يا راهي ميتونيم استفاده كنيم
    مثلا بخواهيم در عدد 123456 جاي 2و5 عوض كنيم يا 3 و 4 با هم عوض كنيم
    <<<<<البته بدون كمك ارايه >>>>>>
    مرسي

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: عوض كردن دو عدد در يك عدد چند رقمي


    int main()
    {
    long a=123456, tmp=0;
    while (a!=0)
    {
    tmp *=10;
    tmp += a%10;
    a /=10;
    }
    a = tmp;
    cout<< a;
    getch();
    }

  3. #3

    نقل قول: عوض كردن دو عدد در يك عدد چند رقمي

    بدون آرايه؟؟

    بدون آرايه براي اين مثال اينطوري ميشه:

    n=123456;
    n-=2*(10^4);
    n+=5*(10^4);
    n-=5*(10^1);
    n+=2*(10^1);


    ولی بشرط اینکه ارقام 2,5 و جایگاهشونو بدونی.

    آخه بدون آرایه چطور میشه؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: عوض كردن دو عدد در يك عدد چند رقمي


    #include <math.h>
    // رقم با ایندکس مشخص را بر میگرداند
    long FindValue ( long num, int index1)
    {
    long tmp1;
    num /= pow(10,index1);
    num %=10;
    return num;
    }
    int main()
    {
    long tmp1, tmp2, num=123456, tmp=0;
    int c=0, index1=1, index2 =4; // revers number 2, 5
    tmp1 = FindValue ( num, index1); // رقم با ایندکس را پپیدا میکند
    tmp2 = FindValue ( num, index2);
    // عدد را جابجا میکند
    tmp = 0;
    while (num!=0)
    {
    tmp *=10;
    if( c==index1 )
    tmp += tmp2;
    else
    if( c==index2 )
    tmp += tmp1;
    else
    tmp += num%10;
    num /=10;
    C++‎‎‎;
    }
    // در اینجا عدد برعکس شده آنرا به حالت اول بر میگرداند
    num = tmp;
    tmp = 0;
    while (num!=0)
    {
    tmp *=10;
    tmp += num%10;
    num /=10;
    }
    num = tmp;
    printf("%ld", num);
    getch();
    }


    روش بازگشتی

    long tmp=0, tmp1, tmp2;
    int index1=1, index2=4;
    long GetNum( long num, int index)
    {
    if( num!=0 ){
    if( index==index1 )
    tmp1 = num%10;
    else
    if( index==index2 )
    tmp2 = num%10;
    GetNum(num/10, index+1);
    }
    tmp *=10;
    if( index==index1 )
    tmp += tmp2;
    else
    if( index==index2 )
    tmp += tmp1;
    else
    tmp += num%10;
    return tmp;
    }
    int main()
    {
    // revers numbers 2 in number value
    long num=123456;
    printf(" %ld", GetNum( num, 0) );
    getch();
    }
    آخرین ویرایش به وسیله tdkhakpur : پنج شنبه 19 آذر 1388 در 22:08 عصر دلیل: الصاق روش بازگشتی

  5. #5
    کاربر دائمی آواتار shask00l
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    روی پاهای خودم
    سن
    38
    پست
    387

    نقل قول: عوض كردن دو عدد در يك عدد چند رقمي

    راه ساده تری هم هست . مثلا کل عدد رو به رشته تبدیل کنید . تغییرات رو اعمال کنید و دوباره رشته رو به عدد تبدیل کنید . روش ساده تریه و راحت تر میشه گسترشش داد.

    پ.ن : ببخشید .. به اون بخش آرایه توجه نکرده بودم .
    آخرین ویرایش به وسیله shask00l : جمعه 20 آذر 1388 در 20:27 عصر

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: عوض كردن دو عدد در يك عدد چند رقمي

    نقل قول نوشته شده توسط shask00l مشاهده تاپیک
    راه ساده تری هم هست . مثلا کل عدد رو به رشته تبدیل کنید . تغییرات رو اعمال کنید و دوباره رشته رو به عدد تبدیل کنید . روش ساده تریه و راحت تر میشه گسترشش داد.
    آره ولی رشته جزو آرایه هاست.

قوانین ایجاد تاپیک در تالار

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