#560 · Subiectul II · Programare
Arbore dat prin vectorul de tați: rădăcina, nodurile cu cei mai mulți fii și frunzele (subprogramul pozitie)
✓ Rezolvare explicatăBucurești 2020 · nr. 13
Enunț
a) Subprogramul pozitie are trei parametri prin care primește: n, un număr natural din intervalul [2, 100); v, un tablou unidimensional cu cel mult n numere naturale din intervalul [0, 10²); x, un număr natural din intervalul [1, n]. Subprogramul returnează poziția primei apariții a numărului x în tabloul v sau -1 în cazul în care numărul x nu apare în tablou. Tabloul unidimensional este indexat de la 1. Scrieți la calculator definiția completă a subprogramului.
Exemplu: pentru n=7, tabloul v=(5, 1, 0, 8, 0, 2, 3) și x=0, se returnează 3.
b) Se consideră un arbore cu rădăcină cu n noduri, dat prin vectorul „de tați”. Nodurile sunt etichetate cu numere distincte de la 1 la n. Fișierul arbore.in conține două linii. Pe prima linie a fișierului este scris un număr natural nenul n (n < 100), ce reprezintă numărul de noduri ale arborelui, iar pe următoarea linie sunt scrise n numere naturale din intervalul [1, 10²), reprezentând valorile componentelor vectorului „de tați”. Se cere scrierea și executarea la calculator a unui program care citește din fișierul arbore.in numărul n și cele n elemente ale vectorului „de tați” și afișează pe ecran, pe prima linie, eticheta nodului rădăcină, pe a doua linie nodurile cu cei mai mulți fii, iar pe a treia linie etichetele nodurilor de tip frunză. Valorile se afișează separate prin câte un spațiu, în ordine crescătoare. În rezolvare se folosesc apeluri utile ale subprogramului pozitie.
⚠️ Enunțul spune că valorile vectorului de tați sunt în
[1, 10²), dar rădăcina are, prin definiție, tatăl0(exemplul o confirmă:2 0 2 2 …). Tot0se caută și cupozitie, deși subprogramul cerexîn[1, n]. Rezolvarea urmează exemplul.
Exemple
Date de intrare (arbore.in) |
Date de ieșire | Explicații |
|---|---|---|
102 0 2 2 3 3 5 3 1 1 |
22 34 6 7 8 9 10 |
Rădăcina are tatăl 0. Nodurile 2 și 3 au câte 3 fii. Frunzele sunt nodurile care nu sunt tatăl nimănui |
Rezolvare
Exersează mai departe