Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sorting digits of an integer

Tags:

c++

c

You are given an integer 51234 (say) we need to sort the digits of a number the output will be 12345.

How to do it without using array ?

like image 287
whacko__Cracko Avatar asked Jan 25 '10 06:01

whacko__Cracko


2 Answers

You can use a loop and % 10 to extract each digit. An outer loop from 0 to 9 could be used to test if the digit exists. If it exists, print it.

In pseudo code:

n = integer // 51234
FOR digit = 0 TO 9
  temp = n
  REPEAT
    IF temp % 10 = digit THEN PRINT digit
    temp /= 10
  UNTIL temp = 0

Edit: This test in gcc shows that it handles zeros and repeated digits:

$ cat sortdigits.c
#include <stdio.h>
main () {
 int n,digit,temp;
 n = 43042025;
 for (digit=0;digit<9;digit++)
   for (temp=n;temp>0;temp/=10)
     if (temp%10==digit) printf("%d",digit);
 printf("\n");
}
$ ./sortdigits
00223445
like image 120
Carlos Gutiérrez Avatar answered Oct 26 '22 02:10

Carlos Gutiérrez


You don't need to write a program at all, just do it with shell commands:

echo "51234" | sed 's+\(.\)+\1\n+g' | sort | tr -d '\n'
like image 20
user231967 Avatar answered Oct 26 '22 02:10

user231967