Răspuns :
Răspuns:
#include <algorithm>
#include <iostream>
using std::cout, std::cin, std::endl, std::sort;
/* Funcția returneză numărul de cifre al unui număr */
static size_t nrCifre(int numar) {
size_t contorCifre{}; // ai un contor care inițial este egal cu 0
while (numar) { // cât timp numărul este diferit de 0
++contorCifre; // incrementăm contorul
numar /= 10; // și împărțim la 10 pentru a micșora numărul
}
return contorCifre; // la final returnăm contorul
}
int main() {
// nrCitit va fi variabila în care salvăm numărul de la tastatură, de i ne vom folosi pentru a adăuga în vector
int nrCitit, i{};
size_t dimensiuneVector;
cout << "Introdu un numar >> ";
cin >> nrCitit; // citim numărul
// creăm un vector fix de dimensiunea de care avem nevoie dacă numărul citit este 1234 dimensiunea vectorului va fi 4
dimensiuneVector = nrCifre(nrCitit);
int *vectorCifre = new int[dimensiuneVector];
// cât timp nrCitit este diferit de 0
while (nrCitit) {
vectorCifre[i++] =
nrCitit % 10; // luăm ultima cifră și-o adăugăm în vector
nrCitit /= 10;
}
// sortăm descrescător vectorul
sort(vectorCifre, vectorCifre + dimensiuneVector,
[](const int &primulNumar, const int &alDoileaNumar) -> bool {
return primulNumar > alDoileaNumar;
});
// și după efectiv afișăm cifrele (ne rezultă automat cel mai mare număr ce se poate forma cu cifrele numărului citit deoarece am sortat descrescător cifrele numărului citit din vector)
for (size_t j = 0; j < dimensiuneVector; ++j) cout << vectorCifre[j];
cout << endl;
// la final eliberăm memoria
delete[] vectorCifre;
return 0;
}
Explicație:
Poate nu e cea mai rapidă soluție, 100% sunt altele mai bune dar își face treaba și sincer mie mi se pare logică și ușoară.
Iei cifrele numărului, le bagi într-un vector, sortezi descrescător vectorul și după-l afișezi.
Mai ai o soluție ( mai eficientă ) care se folosește de un „hashed array” în care vei salva de câte ori apare cifra în număr și după parcurgi array-ul și calculezi cifrele... mie mi se pare mai complicată
Dacă cauți "Find maximum number that can be formed using digits of a given number" e primul rezultat de la GeekForGeeks, o găsești acolo.
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, vă rugăm să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la lista de favorite!