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