Pentru numarul 41001251, programul tau afiseaza 11100245, dar numarul corect este 10011245.
Asa ca afisezi cifra min o singura data, apoi afisezi tot ce ramane, in ordine crescatoare.
Aici este codul. Am incercat sa modific cat mai putin.
int cmmnr(int n){
int v[10], Nr = 0, cod = 1, min = 10;
for(int i = 0; i <= 9; ++i)
v[i] = 0;
while(n != 0){
v[n % 10]++;
if(n % 10 < min && n % 10 != 0)
min = n % 10;
n /= 10;
}
Nr = min; //Prima cifra
v[min]--; //Am pus deja prima cifra
for(int i = 0;i <= 9; ++i) //Incepem de la 0
{
while(v[i] != 0){
Nr = Nr * 10 + i;
v[i]--;
}
if(i == min)
while(v[0] != 0)
{
Nr = Nr * 10;
v[0]--;
}
}
return Nr;}