Informatică, întrebare adresată de KzVld, 8 ani în urmă

Salut, incerc de aproape o ora sa fac problema asta si nu reusesc.. Ma poate ajuta cineva va rog?

 În fișierul atestat.in se găsesc, pe prima linie, un număr natural n≤10000, nenul si pe a doua linie un șir de n numere întregi, despărțite de câte un spațiu. Să se afişeze, în fișierul atestat.out:

pe prima linie, toate numerele impare din fișier în ordine descrescătoare, separate prin câte un spațiu. pe a doua linie din fișier, toate numerele din șir în ordine crescătoare, cele pare rămânând pe loc


Răspunsuri la întrebare

Răspuns de Seckar
2
Salut,

Voi presupune ca nu ai probleme cu citirea si scrierea in fisier, acelea sunt banal de simple, asa ca voi vorbi mai mult de algoritm.

1. Citesti n si apoi iti citesti numere intr-un vector.

2. Ar trebui sa sortezi apoi vectorul ca atunci cand ai nevoie de elemente in ordine crescatoare/descrescatoare sa fie gata ordonate

(ordonam crescator vectorul, iar daca vrem elementele descrescator pur si simplu il vom parcurge de la coada la cap!)

Ordonarea o poti face cu un simplu bubble sort care este banal de casit cu o simpla cautare google, nu are rost sa ii dau eu copy/paste aici.

3. Dupa ce ai ordonat, ca sa iei cele impare in ordine descrescatoare pur si simplu cu un for parcurgi invers vectorul si cu un if verifici numarul curent daca e impar, daca e impar scrii numarul in fisier si apoi mai scrii si un spatiu eventual.

4. Scrii un newline in fisier ca sa treaca pe urmatorul rand.

5. Procedezi aproape identic ca la 3. Adica parcurgi vectorul, dar de data asta in ordinea normala, verifici fiecare nr. daca e par, si daca este atunci il pui la locul lui in fisier. 

Asasez o solutie mai compacta. Nu am mai citit din fisier am scris direct niste valori cand testam sa vad daca merge. 

De asemenea am folosit functia de sort care exista deja in c++ dar nu stiu daca la scoala va lasa cu asa ceva oricat de fain ar fi :)))

De scris am scris la consola cu cout, dar e banal sa inlocuiesti acel cout cu o scriere in fisier.

Anexe:
Alte întrebări interesante