Răspuns :
Răspuns:
Explicație:
Codul tau are doua probleme.
1. functia cif nu e corecta decat in cazul in care cifrele identice sunt pe pozitii consecutive.
Sugestie: sorteaza numarul crescator sau descrescator (dupa cifre) la inceputul functiei.
2. sortarea ta e haotica in sensul in care la o parcurgere a celui de-al doilea for se poate alege un numar de interschimbat pe criterii diferite.
Sugestie: sorteaza intai descrescator dupa cif() tot vectorul.
Apoi sorteaza crescator dupa sum() gruparile de elemente din vector cu acelasi cif.
Apoi sorteaza crescator dupa produs() gruparile cu acelasi cif si acelasi sum.
Apoi sorteaza crescator dupa valoare tot ce are acelasi sum, cif si produs.
Pentru cele 4 sortari propun sa folosesti sortari de tip Insertion sau Selection.
Sugestie de implementare: foloseste un vector auxiliar cu acelasi numar de elemente ca si vectorul initial si pune 0 pe fiecare pozitie.
dupa o sortare, schimba 0 cu 1 pe pozitiile cu cif unic.
adica,
ai 111 19 223 51 37 si 0 0 0 0 0
dupa o sortare dupa cif, vei avea 19 223 51 37 111 si 0 0 0 0 1.
in acest moment vei face sortare dupa sum doar pentru numerele cu pozitii care corespund zerourilor in vectorul auxiliar.
la urmatoarea sortare, dupa sum, vei avea
51 223 19 37 111 si 1 1 0 0 1, si faci sortare dupa prod pentru numerele carora le corespund zerouri.
la urmatoarea sortare vei avea 51 223 19 37 111 si 1 1 1 1 1 si te opresti pentru ca nu are rost sa mai sortezi crescator dupa valoare.
Daca ai probleme cu implementarea sau ai dori sa iti propun una efectiv, contacteaza-ma prin mesaj si te ajut in continuare. Spor!
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.