news - 2008-Dec-30
programming - 2008-Dec-24
Let r = radix n = number of bits And i - log_2 (r) j = the number of bytes needed to make a character Then Best = ceil(i)/jn Average = (ceil(i) + 2 - 2^(1 + ceil(i))/r))/jn Worst = floor(i)/jn
scp44@tux64-07:~/programming/cpp$ cat dnum.cpp #include "NumSpace.h" #include#include using namespace std; int main(int argc, char *argv[]) { int MB=atoi(argv[1]); int MN=atoi(argv[2]); NumSpace abc(MB,MN); abc.Print(); abc.AllReps(47); for (int lcv=1;lcv<5;lcv++) cout << abc.GetDigit(13,2,lcv); cout < #include #include "NumSpace.h" int NumSpace::DigitMatrix[MAXBASE][MAXNUM][MAXLEN]; NumSpace::NumSpace(int X, int Y) { // log_2(N) = log(N)/log(2) int Z=(int) ceil(log(Y+1) / log(2)); Xs = X; Ys = Y; Zs = Z; for (int Dig=0; Dig<=Z; Dig++) { // std::cout << "Digit: " << Dig << std::endl; for (int Base=2; Base<=Xs; Base++) { int DigVal=0, DigInd=1; if ( Dig >0 ) DigVal = 1; int length=pow(Base,Dig); int Top=Dig+1; if ( Dig > 0 ) Top--; for (int Num=0; Num = Base ) DigVal = 0; } } } } }; void NumSpace::Print() { for (int Base=2; Base<=Xs; Base++) { std::cout << std::endl << "Base " << Base << std::endl; for (int Num=2; Num<=Ys; Num++) { std::cout << Num << ": "; for (int Dig=Zs; Dig>=0; Dig--) std::cout << DigitMatrix[Base][Num][Dig] << ", "; std::cout << std::endl; } } }; void NumSpace::AllReps(int N) { std::cout << "All reps for " << N << std::endl; for (int B = 2; B < Xs; B++ ) { std::cout << "Base " << B << ": "; for (int Dig=Zs; Dig>=0; Dig--) std::cout << DigitMatrix[B][N][Dig] << ", "; std::cout << std::endl; } } int NumSpace::GetDigit(int N, int B, int D) { int nd=log(N+1)/log(B); return DigitMatrix[B][N][nd-D+1]; }
science - 2009-May-13