AnsiString MakeCol(int value);// convert # into column ref A,B,C...AA,AB...
int MakeNum(AnsiString string); // convert column into #
void main()
{
// A,B,C...Z,AA,AB,..AZ,BA,BC...ZZ,AAA,A
// AB... and so on
int col=1; // value must be >1 & <=MAXINT to properly work
AnsiString string;// just a string to use
do
{
cout << "Enter value to convert (0 for exit) ";
cin >> col;
string = MakeCol(col); // copy the sting to as string for handeling
cout << MakeNum(string) << "= " << string.c_str() << endl;
}
while(col>0);
}
AnsiString MakeCol(int value)
{
AnsiString Finalstring;
int overz=0;
if(value<=AlphaSize) // if it is A-Z
return( char(value+AsciiText) );
if(value>AlphaSize)// if it goes beyond Z
{
while(value>AlphaSize)// calculate how many times it goes beyond Z
{
overz++; // add to over singel digit counter
value-=AlphaSize;
}
//_____________Recurse_Call_____________
// _____________
Finalstring+=MakeCol(overz);// recursively convert
}
Finalstring+=char(value+AsciiText); // append letter to back of string
return(Finalstring);
}
int MakeNum(AnsiString string)
{
string=string.UpperCase(); // make string uppercase letters
char *TrueString=string.c_str(); // make into string of characters
int length=string.Length();// find length of string
int value=0; // whole value of string as int
int lcv=0;// loop controll variable
if(!length)// no size to string
return(0); // string is empty return with error
// check to be sure string is of valid c
// haracter (ONLY LETTERS any case)
for(lcv=0;lcv if((TrueString[lcv] < AsciiA) || (TrueString[lcv] > AsciiZ)) // proper ? return(0); // return 0 for error with string if(length==1) // singel character column number value+=int(TrueString[0]-AsciiText);// give proper value of cahracter if(length>1)// string contains more than one character { value+=int(TrueString[length-1]-AsciiText); // remove leading value of 64 for(lcv=2;lcv<=length;lcv++) { value+=(int(TrueString[length-lcv]-AsciiText) * AlphaSize); } } return(value); }