Se da numarul natural n si se cere sa se afiseze cel mai mic numar natural format din cifrele sale. (C++)
Răspunsuri la întrebare
#include <iostream>
using namespace std;
int i,cifre[21],nrcifre,aux,j,nr;
unsigned long long int n;
int main()
{
cin>>n;
//bagam cifrele intr un vector cifre
while(n)
{
nrcifre++;
cifre[nrcifre]=n%10;
n/=10;
}
///sortam cifrele in ordine crescatoare
for(i=1; i<nrcifre; i++)
{
for(j=i+1; j<=nrcifre; j++)
if(cifre[i]>cifre[j])
{
aux=cifre[i];
cifre[i]=cifre[j];
cifre[j]=aux;
}
}
// for(i=1; i<=nrcifre; i++)cout<<cifre[i]<<" ";
bool ok=0;
/// daca prima cifra e 0 atunci cat timp am cifre 0 le sar si cand ajung la prima cifra diferita de zero
///o interschimb cu prima cifra
/// adica daca avem numarul n= 1230450 atunci trebuie sa rezulte vectorul 0 0 1 2 3 4 5
/// de unde scoatem numarul 1002345, deci prima cifra de 0 din vector s a interschimbat cu prima cifra nenula dupa 0
if(cifre[1]==0)
{
i=1;
while(cifre[i]==0)i++;
int aux=cifre[1];
cifre[1]=cifre[i];
cifre[i]=aux;
for(i=1; i<=nrcifre; i++)
nr=nr*10+cifre[i];
}
else
for(i=1; i<=nrcifre; i++)
nr=nr*10+cifre[i];
cout<<nr;
return 0;
}