Witam, przychodzę z prośbą o zamienienie poniższego kodu C++ w kod C, próbowałem już robić to na własną rękę, ale mam problemy z zamienieniem części new i delete na malloc i free. Oto kod:
unsigned int Wielokrotnosc(int _Wielokrotnosc, int _Liczba)
{
unsigned int Liczba = 1;
for (int i = 1; i < _Wielokrotnosc; ++i)
Liczba *= _Liczba;
return Liczba;
}
char ZamienNaZnak(int _Liczba)
{
switch (_Liczba)
{
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
default: return '\0';
}
}
string Szesnastokwy(unsigned int _Liczba)
{
if (_Liczba == 0) return "0";
if (_Liczba == 1) return "1";
unsigned int _Reszta = 0;
unsigned short _Dzielnik = 0;
for (unsigned int i = 1; i <= _Liczba; i *= 16)
_Dzielnik++;
int *Pozycja = new int[_Dzielnik]; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
for (int i = 1; i <= _Dzielnik; ++i)
{
Pozycja[i - 1] = _Liczba / Wielokrotnosc(_Dzielnik - i + 1, 16);
_Reszta = _Liczba % Wielokrotnosc(_Dzielnik - i + 1, 16);
_Liczba = _Reszta;
}
string Liczba_szesnastkowa = ""; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
for (int i = 0; i < _Dzielnik; ++i)
Liczba_szesnastkowa += ZamienNaZnak(Pozycja[i]);
delete[] Pozycja; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
return Liczba_szesnastkowa;
}
Oczywiście nie jest to całość programu, pomijam zbędne rzeczy. Ogólnie wiadomo że trzeba zamienić string na char*. Proszę o pomoc, jestem zielony jeśli chodzi o sposoby przydzielania pamięci w C, dlatego proszę o pomoc.
Z góry dziękuję za odpowiedź.
Pozdrawiam!