PDA

View Full Version : مبتدی: سوال در مورد اشکال در تبدیل مبنا



mmvalinezhad
چهارشنبه 02 بهمن 1392, 03:04 صبح
با سلام خدمت دوستان و اساتید محترم
برنامه ای نوشتم که عددی در مبنای 10 را به مبنای دو تبدیل کند.حالا مشکل اینجاست که وقتی عددی مثل 12 را وارد می کنیم به صورت 1100 باید تحوبل دهد اما 11 تحویل می دهد.لطفا در عیب یابی برنامه به من کمک کنید.
با تشکر
#include <stdio.h>
#include <conio.h>

int main()
{
int x,r,c,d,t,X,R,C,D;
printf("Enter: (x) base 10 -> (?) base 2 \n x=");
scanf("%d",&x);
c=0;
t=x;
r=0;
if (x<0)
x=-1*x;
while (d!=0)
{
d=(x/2);
r=x-(2*d);
c=(c*10)+r;
x=d;
}
X=c;
C=0;
R=0;
while (D!=0)
{
D=(X/10);
R=X-(10*D);
C=(C*10)+R;
X=D;
}
if (t<0)
C=-1*C;
printf("\n %d",c);
getch();
return 0;
}

Behnam.B
چهارشنبه 02 بهمن 1392, 07:55 صبح
سلام، برنامه یه مشکل کوچیک داره: چون c از اول صفره و ضربدر 10 شدن روش تاثیری نداره؛ در نهایت صفرای جلوی اعداد نشون داده نمیشن..
با این تغییر میشه به جواب رسید:
#include <stdio.h>
#include <conio.h>

int main(){
int x, r, c, d, t;
//** vase mohasebe tavan ha:
int pow = 1;

printf("Enter: (x) base 10 -> (?) base 2 \n x=");
scanf("%d", &x);
c = 0;
t = x;
r = 0;

if (x<0)
x = -1 * x;

d = x;
while (d != 0){
d = (x / 2);
r = x - (2 * d);
c += pow * r; //
pow *= 10; //
x = d;
}

printf("\n %d", c);
getch();
return 0;
}

و البته واسه بدست آوردن باقی مانده از % هم میشه استفاده کرد... :لبخندساده:

siryahya
جمعه 04 بهمن 1392, 22:59 عصر
سورس تبدیل مبنا از 10 به هر مبنای دیگر به صورت خیلی ساده
مشاهده سورس (http://takcoder.ir/?p=277)