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

In limbaj c++ !! Se da un vector a cu N elemente. Sa se formeze cel mai mare nr cu prima cifra de la fiecare element al vectorului.
exemplu: a=(1283,762,91,5,11) --> nr 97511


artur99: vectorul e citit deja?
AndreeaMosulet: da
artur99: oke

Răspunsuri la întrebare

Răspuns de artur99
1
int nr[200], l, k=0, min, t, aux, dec=1;
long numar=1;

for(i=0;i<n;i++){
    //Pentru fiecare numar din vector
    while(v[i]>0){
        //Cat timp numarul e mai mare decat zero
        l=v[i]%10;
        //stocam in l ultima cifra
        v[i]=v[i]/10;
        //Apoi scoatem ultima cifra din vector
    }
    nr[k]=l;
}
k=k-1;
//Acum ai stocat in vectorul nr primele cifre de la fiecare numar din vectorul initial
//De acum trebuie sa le sortam, ca sa fie numarul maxim
//Algoritmul de sortare crescatoare prin aflarea minimului
for(i=0;i<=k;i++) {
    
    min=nr[i];
    
    t=i;
    
    for(j=i+1;j<n;j++)
            if(v[j]<min) {
                min=nr[j];
                t=j;
    
        }
    aux=nr[i];
    nr[i]=nr[t];
    nr[t]=aux;
}
//Acum avem vectorul sortat crescator... Trebuie sa transformam cifrele intr-un numar
// e de genul 2, 3, 4   si o sa facem asa :D
// adaugam 2 in variabila, apoi 3*10, apoi 4*100, si tot asa
for(i=0;i<k;i++){
    numar=numar+dec*nr[i];
    dec=dec*10;//1, 10, 100
}
cout<<numar;

artur99: Este doar orientativ, posibil sa fie si greseli :D
artur99: Daca aveti voie, ar fi mai usor sortarea de la headerul algoritmh
artur99: bagi #include <algorithm> la inceput
AndreeaMosulet: Am inteles. Mersi mult :)
artur99: apoi, in loc de algoritmul ala de sortare, scrii sort(nr, nr + k);
artur99: Cu placere :)
Alte întrebări interesante