Необходимо написать функции перевода вещественных и целых чисел в строку без функций. Первую функцию написал.
int numberofdigits(int n)
{
int counter = n == 0 ? 1 : 0;
while (n != 0)
{
counter++;
n /= 10;
}
return counter;
}
char * IntToChar(int * n)
{
char *s = new char[numberofdigits(*n) +1];
s[numberofdigits(*n)] = '\0';
int digit, i = numberofdigits(*n) - 1;
while(*n != 0)
{
digit = *n % 10;
*n /= 10;
s[i] = (char)('0' + digit);
i--;
}
return s;
}
сhar * FloatToChar(float * f)
{
char * s = new char[10];
return s;
}
Первая версия:
char *FloatToChar(float * f) {
bool neg = false;
if (*f < 0) {
neg = true;
*f = -(*f);
}
int precision = 3; // количество знаков после запятой
int whole = (int)*f;
int fractional = (int)((*f - floor(*f)) * pow(10, precision));
//std::cout << whole << " " << fractional << std::endl;
int sizeWh = numberofdigits(whole), sizeFr = numberofdigits(fractional);
char * s = new char[sizeWh + sizeFr + neg ? 3 : 2];
if (neg) s[sizeWh + sizeFr + 2] = '\0';
else s[sizeWh + sizeFr + 1] = '\0';
int i, j;
if (neg) i = sizeWh;
else i = sizeWh - 1;
while (whole != 0) {
int digit = whole % 10;
s[i] = (char)(digit + '0');
whole /= 10;
i--;
}
if (neg) s[sizeWh + 1] = '.';
else s[sizeWh] = '.';
if (neg) j = sizeWh + sizeFr + 1;
else j = sizeWh + sizeFr;
while (fractional != 0) {
int digit = fractional % 10;
s[j] = (char)(digit + '0');
fractional /= 10;
j--;
}
//float intpart, fractpart;
//fractpart = modf(*f, &intpart);
//while (fractpart < 0) fractpart *= 10;
if (neg) s[0] = '-';
return s;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть указатель на вектор std::vector*Как получить адрес элемента i этого вектора?
В Java, начиная с 8 версии, появилась новая вариация OutOfMemory error : Metaspace
Всем привет! Подскажите по такому вопросуРазрабатываю под android на Kotlin