PDA

View Full Version : سوال: مبنا



tondar1991
پنج شنبه 06 خرداد 1389, 19:11 عصر
سلام
چطوری میتونیم 2عدد در مبنای 2رو با هم جمع کنیم و مبنای 2 بودن عدد رو بررسی کنیم؟

tdkhakpur
پنج شنبه 06 خرداد 1389, 21:26 عصر
خب عدد را هر طور نگاه کنید میتواند هر حالتی را داشته باشید!
عدد مورد نظر شما بصورت رشته است یا داخل متغییر عددی قرار دارد؟
اگر عددیسیت فرقی ندارد میتوانید انرا مبنای 2 هم بدانید.

ztx4
پنج شنبه 06 خرداد 1389, 23:35 عصر
اگر منظورتون چک کردن عدد وارد شده توسط کاربره که کافی عدد رو رقم به رقم بررسی کنید اگر رقم ها ی داخل عدد فقط صفر و یک بودند که عدد مبنای 2 هست.اگر نه مثلا مبنای 10

اگر برای تست کردن رقم به رقم مشکل دارید بگید تا قطعه کدش رو بگذارم براتون.

saber187518
جمعه 07 خرداد 1389, 01:25 صبح
با سلام
دوستان عزیز در چک کردن نباید فقط مبنا رو بر صفر یا یک بودن ارقام بذاریم.
چون که فرض کنید طرف عدد 100 رو وارد کنه. اولا که این عدد اگه در مبای 10 خونده بشه میشه صد و اگه در مبنای 2 خونده بشه میشه 8.
پس ما نمیتونیم فقط بگیم اگه صفر و یک بود عدد باینری هست.
باید یک فکر دیگه کرد.:متفکر:
موفق باشید

ztx4
جمعه 07 خرداد 1389, 11:11 صبح
با سلام
دوستان عزیز در چک کردن نباید فقط مبنا رو بر صفر یا یک بودن ارقام بذاریم.
چون که فرض کنید طرف عدد 100 رو وارد کنه. اولا که این عدد اگه در مبای 10 خونده بشه میشه صد و اگه در مبنای 2 خونده بشه میشه 8.
پس ما نمیتونیم فقط بگیم اگه صفر و یک بود عدد باینری هست.
باید یک فکر دیگه کرد.:متفکر:
موفق باشید

حق با شماست. من حالت خیلی خیلی ساده و ابتدایی رو عرض کردم.

می شه به راحتی این کار رو انجام داد.

کافیه در داخل برنامه تنظیمی داشته باشیم که نشون دهنده ی مبنای عدد ورودی باشه.
اگر برنامه تحت کنسوله می شه یک منو برای این کار طراحی کرد.اگر تحت ویندوزه که راحت تره می شه از option button استفاده کرد.

موفق باشید.

mohsensaghafi
جمعه 07 خرداد 1389, 16:11 عصر
با سلام
دوستان عزیز در چک کردن نباید فقط مبنا رو بر صفر یا یک بودن ارقام بذاریم.
چون که فرض کنید طرف عدد 100 رو وارد کنه. اولا که این عدد اگه در مبای 10 خونده بشه میشه صد و اگه در مبنای 2 خونده بشه میشه 8.
پس ما نمیتونیم فقط بگیم اگه صفر و یک بود عدد باینری هست.
باید یک فکر دیگه کرد.:متفکر:
موفق باشید

سلام دوست عزیز.
سوال دوستمون این بود که مبنای 2 بودن عدد رو چک کنن و دقیقا عددی در مبنای 2 هست که ارقامش 0 و یا 1 باشد.
یا علی!

Salar Ashgi
جمعه 07 خرداد 1389, 18:53 عصر
براي جمع كردن دو عدد تو مبناي دو 2 روش معمول وجود داره :

روش اول :

دو عدد رو ببرين مبناي 10 ، جمع كنين ، بعد ببرين مبناي 2

روش دوم :

رقم به رقم طبق قاعده مبناي 2 ،‌ تو مبناي 2 جمع كنين .

موفق باشيد .

Shiva.K
جمعه 07 خرداد 1389, 19:07 عصر
براي جمع كردن دو عدد تو مبناي دو همون روش اول راحت تره.
ولی در مورد چک کردن عدد ورودی که باینری یا نه صرفآ جدا کردن ارقام و اینکه با 0 و 1 مقایسه کنیم جواب نداد!

ایراد کد منو بگیرید مرسی!


#include <iostream.h>
#include <conio.h>
int main()
{
int n,r,s=0;
cout<<"Enter number:";
cin>>n;
while (n>0){
r=n%10;//for sum
n/=10;}//for count
if (r==0 || r==1)
cout<<"The num is binary."<<endl;
else cout<<"The num is not binary!"<<endl;
getch();
return 0;

}

ztx4
جمعه 07 خرداد 1389, 19:35 عصر
براي جمع كردن دو عدد تو مبناي دو همون روش اول راحت تره.
ولی در مورد چک کردن عدد ورودی که باینری یا نه صرفآ جدا کردن ارقام و اینکه با 0 و 1 مقایسه کنیم جواب نداد!

ایراد کد منو بگیرید مرسی!


#include <iostream.h>
#include <conio.h>
int main()
{
int n,r,s=0;
cout<<"Enter number:";
cin>>n;
while (n>0){
r=n%10;//for sum
n/=10;}//for count
if (r==0 || r==1)
cout<<"The num is binary."<<endl;
else cout<<"The num is not binary!"<<endl;
getch();
return 0;

}



این کد فقط رقم اول از سمت چپ رو چک می کنه و در صورت صفر یا یک بودن میگه عدد باینری هست.
کد شما باید به شکل زیر اصلاح بشه:





#include <iostream.h>
#include <conio.h>
int main()
{
int n,r;
bool flag= true;
cout<<"Enter number:";
cin>>n;
while (n>0){
r=n%10;//for sum
n=n/10;
if (r!=0 && r!=1){
flag=false;
break;
}
}//for count
if(flag)
cout<<"The num is binary."<<endl;
else
cout<<"The num is not binary!"<<endl;
getch();
return 0;

}

tondar1991
جمعه 07 خرداد 1389, 20:54 عصر
دوستان از همتون ممنونم. خیلی مفید بود نظراتتون
شاد باشید و پیروز:چشمک: