Informatică, întrebare adresată de REAdriana, 9 ani în urmă

Se citeşte de la tastaturǎ un numǎr natural. Sǎ se afişeze cel mai mare numǎr care se poate forma cu cifrele distincte ale numǎrului dat.
Exemplu Pentru numǎrul 29363, mulţimea cifrelor distincte este {2, 3, 6, 9}, iar numǎrul cerut este 9632.
C++...cat mai simplu, daca se poate :)

Răspunsuri la întrebare

Răspuns de dariusbossu12
1
Imdd in 6 m rezolv sper ca team ajutat

artur99: lol, au trecut 9m :))
Răspuns de artur99
1
#include <iostream>
using namespace std;
int main(){
    int n, v[20], i, k=1, con, cif, c=0, aux, final=0;
    cout<<"n=";
    cin>>n;
    while(n>0){
        cif=n%10;//Luam fiecare cifra a numarului n, si o introducem in vector
        con=0;//Prima data verificam daca nu exista deja cifra in vector
        for(i=1;i<=k;i++){
            if(v[i]==cif)
                con=1;
        }
        if(con==0){
            v[k]=cif;//Introducem in vector
            k++;//Incrementam k, ca sa scriem pe urmatoarea pozitie
        }
        n=n/10;//Scoatem ultima cifra
    }
    //Ordonam vectorul descrescator, prin metoda bulelor/bubles/interschimbare
    //Asta ar trebui sa o ai in caiet :P
    do{
        c=0;
        for(i=2;i<k;i++){
            if(v[i]>v[i-1]){
                aux=v[i];
                v[i]=v[i-1];
                v[i-1]=aux;
                c=1;
            }
        }
    }while(c>0);
    //Transformam vectorul intr-un numar
    for(i=1;i<k;i++){
        final = final*10+v[i];
    }
    cout<<final;
    return 0;
}


Anexe:
Alte întrebări interesante