Given a number, convert it to a string and put commas in it after every 3 digits. So given a number say 100054, function should return 100,054 or for a number like 3040005, function should return 3,040,005.
The key steps in writing an commafy function are:
- Check if number is 0. In this case return string "0".
- Check if number is less than zero. Save this information in a variable and make the number positive.
- Extract each digit from the number and add a comma after every 3 digits.
- Make sure to append '-' sign before returning result if the number was negative.
- Remember to reverse the string before returning as we extracted digits LSB first and hence generated string is reverse of expected
const char* commafy(int num)
{
char *text = new char(10);
//Check for num == 0
if(num==0)
return "0\0";
int i=0, sign = 1, count = 0;
//Check if number < 0, Save this info in variable sign and make the number positive
if(num<0)
{
sign = -1;
num = num*-1;
}
//Extract each digit from right and add comma after every 3 digits.
while(num>0)
{
count++;
if(count >1 && (count%3 ==1))
text[i++] = ',';
text[i++] = '0' + num%10;
num=num/10;
}
//Add '-' if number was negative.
if(sign == -1)
text[i++] = '-';
//Add null terminator
text[i] = '\0';
//Reverse string before returning
int len = strlen(text);
for(int i=0;i<(len/2);i++)
{
char temp = text[i];
text[i] = text[len-i-1];
text[len-i-1] = temp;
}
return text;
}
No comments:
Post a Comment