Pagina informaticii

Teste de informatică pentru liceu, articole C#, C/C++, PHP

Teză pe semestrul al II-lea an şcolar 2012-2013 (stiva, coada, lista)

Rândul 1

1. Creaţi un program care să rezolve cerinţele a şi b de mai jos.
a. Scrieţi o funcţie recursivă EstePrim, care returnează 1 dacă un număr natural n este prim sau returnează 0 dacă n nu este prim.
b. În fişierul date.txt pe prima linie se află un număr natural n, iar pe a doua linie un şir de n numere naturale nenule a1, a2, ..., an. Utilizând operaţiile specifice stivei (POP şi PUSH), depuneţi şi extrageţi în/dintr-o stivă elementele şirului astfel: iniţial se pune în stivă a1. Apoi, pentru fiecare ai (i = 2..n), dacă ai nu este prim, se pune în stivă. Dacă ai este prim, atunci se scot din vârful stivei numerele mai mici decât ai până când stiva se goleşte sau în vârf rămâne un element mai mare sau egal cu ai şi se depune apoi pe stivă ai. Se cere să se afişeze numerele rămase în stivă. De exemplu, dacă n = 7 şi şirul a = (3, 24, 4, 8, 11, 6, 19).
Se pun 3, 24, 4, 8, apoi, pentru că 11 este prim, se scot 8 şi 4 şi rămâne în stivă 3, 24, 11. Apoi se depune 6 şi la sfârşit, pentru că 19 este prim, se scot 6 şi 11 şi rămâne 3, 24, 19.

2. Construiţi o listă simplu înlănţuită care memorează n numere naturale generate aleator (unde n >= 3 se citeşte de la tastatură). Să se afişeze lista. Să se elimine apoi al doilea nod din listă. Să se afişeze din nou lista rămasă.

Rândul 2

1. Creaţi un program care să rezolve cerinţele a şi b de mai jos.
a. Scrieţi o funcţie recursivă CountDiv care primind ca parametru un număr natural n, returnează numărul divizorilor proprii ai lui n.
b. În fişierul numere.in pe prima linie se află un număr natural n, iar pe a doua linie se află un şir x1, x2, ..., xn de n numere naturale separate prin câte un spaţiu. Utilizând o coadă şi operaţiile specifice cozii, introduceţi în coadă şi extrageţi din coadă şirul de numere din fişier după regulile următoare (considerăm că tocmai am citit din fişier numărul xi):
I. introducem pe xi în coadă în caz că este vidă coada
II. dacă numărul ce trebuie extras din coadă are numărul de divizori proprii mai mic decât numărul divizorilor lui xi, atunci extragem din coadă toate numerele până ce coada se goleşte sau până ce în vârful cozii rămâne o valoare care are numărul de divizori mai mare sau egal decât ai lui xi. Introducem apoi pe xi în coadă.
III. Dacă numărul din vârful cozii are numărul divizorilor mai mare decât xi, introducem pe xi în coadă.

Să se citească succesiv cele n numere din fişier şi să se introducă în coadă respectând regulile de mai sus. Să se afişeze apoi câte numere au mai rămas în stivă.
De exemplu, pentru n=6 şi şirul 48, 12, 4, 3, 1024, 24. Se introduc pe rând în coadă 48, 12, 4, 3, apoi deoarece 1024 are mai mulţi divizori decât toate elementele din coadă, se scot toate şi se introduce valoarea 1024. La sfârşit se adaugă în coadă valoarea 24. Deci la final coada va avea două elemente.

2. Utilizând inserarea la începutul unei liste, să se construiască o listă, iniţial vidă, prin adăugarea la început a k numere naturale generate aleator (unde k se citeşte de la tastatură). Să se afişeze lista. Să se elimine din listă numerele impare din listă. Să se afişeze din nou lista rămasă.

Despre autor
Author

Dan Pracsiu deţinător www.dponline.ro
Profesor, Liceul Teoretic "Emil Racoviță" Vaslui
Membru în Comisia Naţională a Olimpiadelor de Informatică
Pasiuni: istoria, călătoriile, fotografia, muzica clasică

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =