Pe prima linie a fişierului text DATE.TXT se află un număr natural nenul n (n≤1000), iar pe a
doua linie un şir de n numere întregi nenule, depărţite prin câte un spaţiu, fiecare având cel
mult 9 cifre.
a) Scrieţi un program Pascal care citeşte numerele din fişier şi ordonează crescător doar
numerele pozitive din şir, fără a modifica poziţiile numerelor negative. Programul va afişa,
pe ecran, pe o singură linie, şirul obţinut după ordonare, numerele fiind despărţite prin câte
un spaţiu. În locul fiecărui număr negativ din şirul citit se va afişa valoarea 0. Realizaţi un
program eficient din punct de vedere al spaţiului de memorie folosit. (6p.)
Exemplu: dacă fişierul DATE.TXT conţine:
7
32 -491 23 -328 213 51 -4
pe ecran se va afişa:
23 0 32 0 51 213 0
b) Descrieţi succint, în limbaj natural, metoda utilizată, justificând eficienţa acesteia. (4p.)
Cum putem ordona numerele fara a folosi un vector? Daca numai cu vector o putem rezolva care ar fi metoda mai putin eficienta care trebuie evitata la aceasta problema?(am studiat Pascal in liceu daca asta are vreo importanta)
Avand in vedere ca se cere doar eficienta a memoriei folosite, poti sa folosesti un simplu „bubble sort”, care face sortare in acelasi spatiu de memorie.
Nu stiu ce alti algoritmi de sortare vi s-au predat la scoala.
Dar totusi avem nevoie de un vector care implica memorie , eram curios de o rezolvare fara vector daca se poate?(ceea ce vreau sa spun e ca de cate ori vedeam pana acum in cerinta „eficient d.p.d.v al memoriei se gasea o rezolvare fara vectori iar aici nu vad niciuna)
Sortarea cere neaparat vector, mai putin cazuri particulare. Aici nu este un caz particular, asa ca numerele trebuie citite intr-un vector.