ورود

View Full Version : عوض كردن دو عدد در يك عدد چند رقمي



hosseine
پنج شنبه 19 آذر 1388, 15:05 عصر
سلام
يه سوال كوچيك
اگه بخواهيم اعداد يك عدد چند رقمي را با هم عوض كنيم از چه دستوري يا راهي ميتونيم استفاده كنيم
مثلا بخواهيم در عدد 123456 جاي 2و5 عوض كنيم يا 3 و 4 با هم عوض كنيم
<<<<<البته بدون كمك ارايه >>>>>>
مرسي

tdkhakpur
پنج شنبه 19 آذر 1388, 20:15 عصر
int main()
{
long a=123456, tmp=0;
while (a!=0)
{
tmp *=10;
tmp += a%10;
a /=10;
}
a = tmp;
cout<< a;
getch();
}

mortezamsp
پنج شنبه 19 آذر 1388, 20:35 عصر
بدون آرايه؟؟

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


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

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

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

tdkhakpur
پنج شنبه 19 آذر 1388, 21:45 عصر
#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();
}

shask00l
جمعه 20 آذر 1388, 15:06 عصر
راه ساده تری هم هست . مثلا کل عدد رو به رشته تبدیل کنید . تغییرات رو اعمال کنید و دوباره رشته رو به عدد تبدیل کنید . روش ساده تریه و راحت تر میشه گسترشش داد.

پ.ن : ببخشید .. :اشتباه: به اون بخش آرایه توجه نکرده بودم .

tdkhakpur
جمعه 20 آذر 1388, 15:14 عصر
راه ساده تری هم هست . مثلا کل عدد رو به رشته تبدیل کنید . تغییرات رو اعمال کنید و دوباره رشته رو به عدد تبدیل کنید . روش ساده تریه و راحت تر میشه گسترشش داد.
آره ولی رشته جزو آرایه هاست.