PDA

View Full Version : سوال: بردن عدد به مبناي 11



amir190d
شنبه 10 بهمن 1388, 00:33 صبح
با سلام خدمت دوستان استادم يك برنامه گفته كه چند تا عدد از ورودي بگيره بعد اين چند تا عدد كنار هم بزاره بگه تو مبناي 11 بخش پذيره بعد يك توضيح داده كه عددي در مبناي 11 بخش پذيره كه يكي در ميان منفي بشه مثالشم اينه11= 8+3-9+9-5+0-1 :ناراحت:

qwerty11
شنبه 10 بهمن 1388, 01:09 صبح
سلام دوست عزیز،
ببخشید شما با فن آوری نقطه و ویرگول آشنایی ندارین !؟ بابا اصلاً معلوم نیست چی نوشتی !!!!!!
اما اگه منظورت اینه که یه عدد به ما میدن و میگن به 11 بخش پذیره یا نه : اعداد واقع در خونه های زوج رو با هم جمع کن و اعداد واقع در خونه های فرد رو هم با هم جمع کن. تفاضل این 2 تا عدد باید به 11 بخش پذیر باشه.
متلاً اگه عدد برابر با 5258 باشه اونوقت مجموع اعداد واقع در خونه های زوج 10 و مجموع اعداد واقع در خونه های فرد هم 10 هستش. پس چون 10-10 به 11 بخش پذیره پس عدد 5258 به 11 بخش پذیره...

amin1softco
شنبه 10 بهمن 1388, 20:09 عصر
به نظر من همینطوره که دوستمون گفتند سوال فکر کنم بخشپذیری بوده به طور حتم ولی من یک سورس خوب که با vc++6 نوشته شده معرفی می کنم که از هر مبنایی عدد رو دریافت و به هر مبنایی بین 2 تا 16 تبدیل می کنه جالبه:



/*
Name: Base convertion
Copyright: no Copyright
Author: Mostafa Jalambadani
Date: 13/03/06 15:23
Description: conver number form base n (2 <= n <= 10) to base m ( 2<=

m <=16 )
*/

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

using namespace std;

void print(char); //echo digit on screan with numeric format
void DecToMBase(unsigned long int,char); //convert number from decimal to m base
unsigned long int nBaseToDec
(unsigned long int ,char ); // convert number form n base to decimal
unsigned long int readNum( char); //read number in n base
char readBase(void); //read base

/**************************
main function
program start from here
***************************/

int main(void)
{
unsigned long int x;
unsigned short int nbase,mbase;

cout<<"enter n base :";
nbase=readBase();
cout<<"enter your number in "<<nbase<<" :";
x=readNum(nbase);
cout<<"enter m base :";
mbase=readBase();

DecToMBase(x,mbase);
getch();
return 0;
}
/*******************************
function print
echo a digit in screen
*******************************/
void print(char c)
{
if( (c>=0) && (c<=9)){
cout<< static_cast<unsigned int>(c);
}else
cout<< 'A'+c-10;


}

/********************************
conver base n to 10
********************************/

unsigned long int nBaseToDec(unsigned long int x,char n)
{
unsigned char digit;
unsigned long int value=0;
for(int i=0; x ;i++)
{
digit=(x%10);
x/=10;
value+=(digit* static_cast<long int>(pow(n,i)));
}
return value;
}

/********************************
conver base 10 to m
********************************/

void DecToMBase(unsigned long int x,char m)
{
long int p=0,i,k;
while (x>=m)
for(i=0; ;i++)
if(x < pow(m,i))
{
k=static_cast<long int>(floor(x/pow(m,i-1)));
x%=static_cast<long int>(ceill(pow(m,i-1)));
for(int j=1; j < p-i ;j++)
print(0);
print(k);
p=i;
break;
}
//end of while loop

for(int j=1; j < p-1; j++)
print(0);

print(x);

}

/********************************
read number in n base
********************************/

unsigned long int readNum(char base)
{
unsigned long int num=0;
for (char ch=0, i=0; ch!=13 ;i++)
{
ch=getch();
if ( (ch>='0') && (ch<=base+'0'-1) && (base<=10) )
{
num *=base;
num += (ch-'0');

}
else if ( ( (ch>='0') && (ch<='9') ) &&
( (base>=10)&& (base<=16) ) )
{
num *=base;
num += (ch-'0');
}
else if ( (ch>='A') && (ch <='A'+base-11) &&
(base>=11)&& (base<=16) )
{
num *=base;
num += (ch-'A'+10);
}
else if ( (ch>='a') && (ch <='a'+base-11) &&
(base>=10)&& (base<=16) )
{
num *=base;
num += (ch-'a'+10);
}
else if (ch==13);
else
ch='\a';

cout<<ch;
}
cout<<endl;
return num;
}

/********************************
read base ( 2 <= base <= 16)
********************************/

char readBase(void)
{
int base;
cin>>base;
while ( !( (base >=2 ) && (base<=16) ) )
{
cout<<"\a"<<endl<<"Base not suport enter again :";
cin>>base;
}

return base;
}

نویسندشم که ایرانیه:لبخند: