PDA

Visualizza la versione completa : [C++]Hex to Dec


Luc@s
14-12-2003, 09:02
// Convert a decimal number into a hexadecimal number
AnsiString hex_to_dec(AnsiString src)
{
AnsiString ret;
/*
pow( x, y );

x^y
*/
int * vet = new int[src.Length()];
for(int i = src.Length(); i < 0; i--)
{
for(int j = 0; j < src.Length(); j++)
{
vet[j] += std::pow(16.0, i);
switch (src[i])
{
case 'A':
vet[j] += 10;
break;
case 'B':
vet[j] += 11;
break;
case 'C':
vet[j] += 12;
break;
case 'D':
vet[j] += 13;
break;
case 'E':
vet[j] += 14;
break;
case 'F':
vet[j] += 15;
break;
}
ret += vet[j];
}
}
delete vet;
return ret;
}


Nn mi restituisce nulla:(

iguana13
14-12-2003, 17:37
Intanto spiega cosa dovrebbe fare il programma...

Poi credo che l'errore sia in quel "delete" che precede "return".

Se la funzione restituisce un puntatore e questo lo disallochi, cosa dovrebbe restituire?

Forse mi sbaglio... :ciauz:

Luc@s
14-12-2003, 17:48
#include <string>
#include <iostream>

using namespace std;

string converti10Beta(int n10, int base)
{
string res;
bool neg = false;
char alpha[] =
"0123456789ABCDEFGHIJKLMOPQRSTUVWXYZabcdefghijklmno pqrstuvwxyz";
if(n10 < 0) neg = true;
n10 = (n10 < 0) ? -n10 : n10;
while(n10 > 0)
{
res.insert(res.begin(), alpha[n10 % base]);
n10 /= base;
}
if(neg) res.insert(res.begin(), '-');
return res;
}

int convertiBeta10(string n, int base)
{
int res = 0, mult = 1;
bool neg = false;
string alpha =
"0123456789ABCDEFGHIJKLMOPQRSTUVWXYZabcdefghijklmno pqrstuvwxyz";
if(n[0] == '-') neg = true;
for(int i=n.size()-1; i>=0; --i)
{
int pos = alpha.find_first_of(n[i]);
if(pos == string::npos || pos >= base)
return ~0;
res += pos * mult;
mult *= base;
}
return (neg) ? -res : res;
}


Risolto :) ( (C) Cionci )

Loading