PDA

View Full Version : چگونه عدد 0101 را بر 10 تقسیم کنم؟



HosseinTorab
شنبه 10 اردیبهشت 1390, 20:32 عصر
سلام
چگونه عدد 0101 را بر 10 تقسیم کنم؟

وقتی تقسیم میشه باقی مانده اشتباه تحویل میده
متغیر هام هم int هستند


این رو برای تبدیل باینری 4بیتی به دسیمال نوشتم و ران میشه ولی اگه بهش عدد باینری مثل 0111 بهش بدی که چهارمین عددش 0 باشه اشتباه میکنه
این برنامه رو بدون حلقه میخوام(اجباری هست معذرت میخوام)

#include <iostream.h>
#include <conio.h>
#include <math.h>

int main()
{
int p,r,d,d1,d2,d3,d4 ;
cout << "plz enter a binary number : ";
cin >>p;
r=p%10;
d1=r*pow(2,0);
p=p/10;

r=p%10;
d2=r*pow(2,1);
p=p/10;

r=p%10;
d3=r*pow(2,2);
p=p/10;

r=p%10;
d4=r*pow(2,3);

d=d1+d2+d3+d4;


cout<< d;
getch();
return 0;
}

shahmohammadi
شنبه 10 اردیبهشت 1390, 21:35 عصر
سلام دوست عزيز
برنامتون براي اعدادي مثل 0010 و 0011 هم درست جواب نميده.
حالا كه به اجبار نمي خواي از حلقه استفاده كني مي توني قبل هرمرحله از كارت بررسي كني كه آيا p صفر شده يا نه.

HosseinTorab
شنبه 10 اردیبهشت 1390, 21:45 عصر
سلام دوست عزيز
برنامتون براي اعدادي مثل 0010 و 0011 هم درست جواب نميده.
حالا كه به اجبار نمي خواي از حلقه استفاده كني مي توني قبل هرمرحله از كارت بررسي كني كه آيا p صفر شده يا نه.

حرف شما درسته
ولی مشکلم توی تقسیم کردن برنامه برای اعدای هستش که قبلشان صفر هست مثل
وقتی که 0110 رو میخوام بر 10 تقسیم کنم جواب میشه 7 در صورتی که 6 درسته
مشکلم اینه که باعث میشه الگوریتمم بهم بریزه

shahmohammadi
شنبه 10 اردیبهشت 1390, 22:04 عصر
بله من هم فهميدم اشكال اصلي كجاست.
وقتي عدد 111 را وارد كنيم برنامه مشكلي نداره.
اما وقتي 0111 وارد مي كنيم من متوجه شدم كه اين عدد به صورت مبناي 8(در كامپيوتر من) فرض مي شه و به صورت 73 به كار برده مي شه. مي تونيد بعد از گرفتن p مقدارش رو چاپ كنيد و اين موضوع رو ببينيد.
در ضمن حرف اولم رو هم تكذيب مي كنم . برنامتون درسته.

shahmohammadi
شنبه 10 اردیبهشت 1390, 23:23 عصر
دوست عزيز شما مي تونيد از اين دستور براي جلوگيري از اين مشكل استفاده كنيد:
cin>>dec>>p;
موفق باشيد.

HosseinTorab
یک شنبه 11 اردیبهشت 1390, 10:30 صبح
دوست عزيز شما مي تونيد از اين دستور براي جلوگيري از اين مشكل استفاده كنيد:
cin>>dec>>p;
موفق باشيد.


آقا دستت درد نکنه درست شد
لطف کردی