Atestat_2009_algoritmi.doc

10
ATESTAT 2009 – ALGORITMI – 1. Să se scrie un program în limbajul Pascal sau C++ care să calculeze cel mai mic multiplu comun a n numere naturale date. 2. Se citesc de la tastatură n numere întregi. Să se scrie un program în limbajul Pascal sau C++ care să partiţioneze acest şir în două subşiruri după un x dat astfel: primul subşir să conţină elementele mai mici decât x, iar al doilea – elementele mai mari decât x. 3. Se citesc de la tastatură n numere naturale. Să se scrie un program în limbajul Pascal sau C++ care să rearanjeze aceste numere astfel încât elementele să fie în ordine crescătoare până la jumătatea şirului, apoi să fie în ordine descrescătoare. 4. Se citeşte de la tastatură un n natural nenul. Să se scrie un program în limbajul Pascal sau C++ care să genereze o matrice cu n linii şi n coloane care să fie completată pe linii cu primele numere prime. 5. Să se scrie un program care, pentru n valori întregi citite de la tastatură, afişează valorile în ordine crescătoare. 6. Să se scrie un program care determină şi afişează toate numerele prime mai mici sau egale cu o valoare n naturală, citită de la tastatură. 7. Scrieţi un program care afişează toate numerele prime de trei cifre ale căror inverse sunt tot prime. 8. Să se verifice dacă o valoare întreagă X, citită de la tastatură, se găseşte printre cele n elemente întregi ale unui vector. Elementele vectorului se vor citi de la tastatură în ordine crescătoare. 9. Se citesc de la tastatură un cuvânt şi o literă. Să se afişeze toate cuvintele care se obţin prin înlocuirea unei litere din cuvânt cu litera dată. (Ex: pentru c=’TOC’ şi l=’P’ se vor afişa ‘POC’,’TPC’,’TOP’). 10. Să se determine câte elemente prime se află deasupra diagonalei principale a unei matrice cu n x n elemente naturale.

description

subiecte atestat 2009

Transcript of Atestat_2009_algoritmi.doc

Page 1: Atestat_2009_algoritmi.doc

ATESTAT 2009 – ALGORITMI –

1. Să se scrie un program în limbajul Pascal sau C++ care să calculeze cel mai mic multiplu comun a n numere naturale date.

2. Se citesc de la tastatură n numere întregi. Să se scrie un program în limbajul Pascal sau C++ care să partiţioneze acest şir în două subşiruri după un x dat astfel: primul subşir să conţină elementele mai mici decât x, iar al doilea – elementele mai mari decât x.

3. Se citesc de la tastatură n numere naturale. Să se scrie un program în limbajul Pascal sau C++ care să rearanjeze aceste numere astfel încât elementele să fie în ordine crescătoare până la jumătatea şirului, apoi să fie în ordine descrescătoare.

4. Se citeşte de la tastatură un n natural nenul. Să se scrie un program în limbajul Pascal sau C++ care să genereze o matrice cu n linii şi n coloane care să fie completată pe linii cu primele numere prime.

5. Să se scrie un program care, pentru n valori întregi citite de la tastatură, afişează valorile în ordine crescătoare.

6. Să se scrie un program care determină şi afişează toate numerele prime mai mici sau egale cu o valoare n naturală, citită de la tastatură.

7. Scrieţi un program care afişează toate numerele prime de trei cifre ale căror inverse sunt tot prime.

8. Să se verifice dacă o valoare întreagă X, citită de la tastatură, se găseşte printre cele n elemente întregi ale unui vector. Elementele vectorului se vor citi de la tastatură în ordine crescătoare.

9. Se citesc de la tastatură un cuvânt şi o literă. Să se afişeze toate cuvintele care se obţin prin înlocuirea unei litere din cuvânt cu litera dată. (Ex: pentru c=’TOC’ şi l=’P’ se vor afişa ‘POC’,’TPC’,’TOP’).

10. Să se determine câte elemente prime se află deasupra diagonalei principale a unei matrice cu n x n elemente naturale.

11. Fie un vector cu n componente întregi. Să se determine elementul maxim din vector şi să se afişeze vectorul după ce elementele din stânga celui maxim au fost sortate crescător, iar cele din dreapta maximului au fost sortate descrescător.

12. Să se determine câte elemente prime se află deasupra diagonalei secundare a unei matrice cu n x n elemente naturale.

13. Se citeşte de la tastatură un şir cu n cuvinte. Să se afişeze cuvintele palindrom cu lungime maximă.

14. Scrieţi un program care să afişeze câte cifre pare şi câte cifre impare conţine un număr natural (cu maxim 8 cifre), citit de la tastatură.

15. Să se scrie un program care să afişeze factorul prim care apare la puterea cea mai mare în descompunerea numărului natural x (citit) în factori primi.

16. Se citeşte de la tastatura un număr natural n (100<=n<=999). Dintre numerele naturale mai mici sau egale cu n, să se afişeze acelea care sunt divizibile cu suma cifrelor lor.

Page 2: Atestat_2009_algoritmi.doc

17. Sa se scrie un program care să calculeze recursiv suma cifrelor unui număr natural cu cel mult 8 cifre.

18. Să se scrie un program care să verifice recursiv egalitatea a două şiruri de caractere citite.

19. Se citeşte de la tastatură o cifră x şi un număr natural n (care poate să fie de ordinul sutelor). Calculaţi xn.

20. Se citesc din fişierul NUMERE.TXT un număr natural n (de pe primul rând) şi n numere naturale separate prin spaţii (de pe al doilea rând). Să se afişeze pe ecran cel mai mare divizor comun al celor n numere.

21. Se citeşte de la tastatură un text cu cel mult 250 de caractere. Ştiind că separatorii de cuvinte pot fi:

‘ ‘‚ ’,’, ’;’, ’:’, ’!’, ’?’, ’.’ se cere să se împartă fraza în cuvinte şi să se afişeze fiecare cuvânt pe câte un rând. La sfârşit se va preciza numărul de cuvinte.

22. Să se ordoneze crescător un şir de n numere întregi folosind metoda sortării prin numărare.

23. Să se creeze o listă liniară alocată dinamic cu numere întregi, să se calculeze media aritmetică a elementelor sale şi să se afişeze elemente pare de pe poziţii impare.

24. Se citeşte un text şi o secvenţă. Să se determine numărul de apariţii al secvenţei în text.

25. Să se parcurgă în lăţime un graf neorientat cu n noduri dat prin matricea de adiacenţă.

26. Să se ordoneze crescător un vector de n elemente numere reale folosind metoda inserţiei.

27. Să se ordoneze crescător un vector de n elemente numere reale folosind metoda selecţiei.

28. Să se creeze o listă liniară cu informaţii numere naturale. Eliminaţi din listă toate nodurile care conţin informaţii pare. Se va afişa conţinutul listei atât înainte de eliminare, cât şi după eliminare.

29. Să se afişeze permutările mulţimii {1,2,3, …, n}, unde n este un număr natural dat.

30. Se dau 2 liste alocate dinamic cu elemente numere întregi aflate în ordine crescătoare. Să se interclaseze cele 2 liste.

31. Să se determine numărul componentelor conexe dintr-un graf neorientat cu n vârfuri şi m muchii.

32. Să se inverseze elementele unui şir printr-o procedură recursivă.

33. Se citeşte din fişierul MAT.IN o matrice cu n linii şi m coloane conţinând numai elemente de 0 şi 1. Elementele fiecărei linii reprezintă cifrele binare ale unui număr natural. Să se determine cel mai mare număr natural.

34. Se dă un fişier text MAT.IN care conţine pe câte o linie numele şi prenumele unui elev. Să se creeze un alt fişier MAT.OUT care conţine pe fiecare linie prenumele şi numele elevilor (în această ordine) din fişierul MAT.IN sortaţi alfabetic după prenume.

35. Se citesc din fişierul BAC.IN pe mai multe rânduri mai multe numere naturale de cel mult 3 cifre despărţite prin spaţiu.(pe o linie cel mult 100 numere) Scrieţi in fişierul BAC.OUT pe fiecare linie numerele din fişierul iniţial dar sortate crescător.

Page 3: Atestat_2009_algoritmi.doc

Ex BAC.IN

3 8 5 8 3 9 4 1 BAC.OUT 3 5 8 3 8 9 1 4

36. Se citeşte din fişierul bac. in un text pe mai multe linii. Scrieţi în fişierul bac. out acelaşi text dar in care se schimba literele mici cu litere mari si literele mari cu litere mici.

ExBac.inTata Este laPiatA?Bac. outTATA eSTE LApIATa?

37. Se citeşte de la tastatura pentru n elevi informaţii referitoare la nume, prenume, media, vârsta. Sortaţi descrescător elevii după medie, iar daca au aceeaşi medie se sortează crescător după nume.

38. Realizaţi un program care calculează recursiv maximul a n numere citite de la tastatura.(n< 20, numerele sunt naturale de cel mult 5 cifre).

39. Se citeşte de la tastatura o matrice n x m si calculaţi pentru fiecare coloana numărul de numere neprime.

ExN=3 m=42 5 7 5 1 4 7 02 4 5 6 se va afisa1 2 0 2

40. Se citeste din fisierul bac.in pe prima linie n si apoi pe urmatoarele n linii cate n numere 0 si 1 reprezentand matricea de adiacenta pentru un graf neorientat.

Calculati pentru fiecare nod gradul si spuneti daca sunt noduri izolate in grafExBac.inN=40 1 1 01 0 0 01 0 0 10 0 1 0Se va afisaGradele 2 1 2 1 Nu sunt varfuri izolate.

41. Se dau doua numere naturale a si b citite de la tastatura, a de cel mult 9 cifre , b<=10. Afisati numarul a in baza b.

Ex:

Page 4: Atestat_2009_algoritmi.doc

A=18B=2 Se va afisa 10010

42. Se citeste de la tastatura un numar natural a si un numar natural b (a, b de cel mult 9 cifre). Scrieti cele doua numere in baza 2 pe 32 biti si spuneti cate pozitii dintre cele 32 contin cifre disticte.

Ex.A=27B=13A este 000000000000000000000000000011011B este 000000000000000000000000000001101Se va afisa 3.

43. Se citeste de la tastatura numarul n. Generati in fisierul bac.out primele n numere prime, cate 10 pe

fiecare linie.Ex.N=40Bac.out2 3 5 7 11 13 17 19 23 2931 37

44. Generati toate numerele naturale de 5 cifre care au proprietatea ca suma cifrelor este divizor al produsului cifrelor.

Ex.Un numar este 12345 in care are suma cifrelor 15 si produsul 120.

45. Pentru un numar natural n citit de la tastatura (de cel mult 8 cifre) afisati al p-lea numar prim strict mai mare decat numarul.

Ex. N=20P=4 se va afisa 37

46. Sa se calculeze produsul primilor n termeni ai sirului lui Fibonacci definit astfel :f1=1, f2=1, fn=fn-

1+fn-2 pentru n>=3;Ex : n=6, produsul este 240.

47. Pentru un numar intreg n dat sa se calculeze expresia de mai jos :s=12+42+72+…+(3*n-2)2

Ex : n=5, s=335.48. Sa se calculeze produsul a doua numere naturale prin adunari repetate.

49. Sa se determine toate numerele intregi de 3 cifre abc cu proprietatea ca numarul este egal cu suma cuburilor cifrelor.

Ex : 371=33+53+13.

50. Sa se determine daca 2 numere sunt termeni consecutivi ai sirului lui Fibonacci.Ex : 55 si 89 sunt termeni consecutivi ai sirului lui Fibonacci.

51. Sa se afiseze primele n numere care au suma cifrelor mEx :n=10, m=4 : 1, 2, 3, 4, 10, 11, 12, 13, 20, 21.

52. Se citesc perechi de numere până la întâlnirea valorii 0. Să se afişeze doar acele perechi alcătuite din numere prime între ele. Să se precizeze câte sunt în total.

Ex: (3 27) (5 12) (8 13) (2 46) (13 17) (0 0)

Page 5: Atestat_2009_algoritmi.doc

Se va afişa 5 12, 8 13, 13 173 perechi

53. Sa se scrie un program care afişează pe ecran conţinutul unui fişier text cu nume citit de la tastatura.

54. Sa se creeze un fişier text care conţine toate numerele cuprinse intre a si b formate din cifre identice. Valorile lui a si b se citesc de la tastatura.

Ex : a=10, b=150 fişierul de ieşire va arata astfel : 11, 22, 33, …, 99, 111 .

55. Din fişierul “numere. in” se citesc mai multe numere întregi. Ele sunt scrise in fişier pe mai multe linii. Numerele de pe aceeaşi linie sunt separate prin spaţiu. Sa se scrie un program care construieşte fişierul text “numere. out” conţinând numărul cel mai mare si numărul cel mai mic din fiecare linie a fişierului “numere. in”. Cele doua numere se vor scrie pe aceeaşi linie separate prin spaţiu.

Ex : “numere. in” :10 9 13 57 332 53 96

“numere. out” :3 579 536 6

56. Se citesc numere până la întâlnirea valorii 0. Să se realizeze un program care afişează pentru fiecare număr citit numărul de apariţii al unei cifre specificate de la tastatură.

57. Să se realizeze un program care să calculeze maximul dintre trei numere folosind o funcţie ce calculează maximul dintre două numere şi o alta care foloseşte prima funcţie şi care întoarce maximul dintre cele trei numere.

58. Se citeşte din fişierul „matrice. txt” o matrice pătratică de ordin n. Pe prima linie din fişier se găseşte numărul de linii, iar pe liniile următoare elementele matricei. Realizaţi un program care verifică dacă matricea este simetrică.

59. Fişierul “sir. in” conţine pe o singura linie, separate prin caracterul blanc un şir de numere. Să se scrie în fişierul “sir. out” elementele prime din acest sir.

60. Se da un fişier text cu mai multe linii. Sa se copieze aceste linii in alt fişier text in ordinea descrescătoare a lungimilor liniilor.

61. Să se realizeze un program care verifică dacă un număr n natural este număr prim.

62. Să se realizeze un program care verifică dacă un număr n natural este număr perfect.

63. Se dau doua numere întregi a si b, ce reprezintă numărătorul, respectiv numitorul unei fracţii. Să se realizeze un program care afişează fracţia adusă la formă ireductibilă.

64. Să se realizeze un program care să testeze dacă un vector cu n elemente poate reprezenta o mulţime ( în sens matematic)

65. Să se realizeze un program care afişează numărul de apariţii al elementului maxim dintr-un şir dat cu n elemente numere reale.

Page 6: Atestat_2009_algoritmi.doc

66. Se dau doi vectori A si B cu n si respectiv m elemente ce reprezintă două mulţimi. Să se determine mulţimea ce reprezintă intersecţia celor două mulţimi date.

67. Sa se ordoneze un vector dat cu n elemente întregi prin metoda bulelor.

68. Sa se determine produsul a doua matrice date A(m,n) si B(n,p).

69. Sa se ordoneze crescător elementele de pe diagonala principală a unei matrice pătratice folosind interschimbări de linii si coloane.

70. Să se realizeze un program care calculează produsul elementelor de sub diagonala secundară a unei matrice pătratice de ordin n..

71. Scrieţi un program ce creează un fişier text cu date introduse de la tastatura.

72. Scrieţi un program care concatenează doua fişiere text. Rezultatul concatenării se va pune în primul fişier.

73. În fişierul NUMERE.TXT se află mai multe numere naturale scrise cu spaţiu între ele. Să se creeze fişierul PARE.TXT care sa conţină, cate una pe linie doar acele valori din fişierul NUMERE.TXT care sunt numere pare.

74. Se consideră n numere naturale. Să se determine c. m .m. d. c. al celor n numere. Datele de intrare se citesc din fişierul „input.txt” sub forma următoare: pe prima linie se va găsi n iar pe următoarele n linii numerele. Rezultatul se va afişa pe ecran.

75. Să se creeze o listă liniară simplu înlănţuită cu elemente numere întregi. Să se afişeze elementele listei de la ultimul element câtre primul.

76. Să se realizeze un program care construieşte două liste liniare simplu înlănţuite cu elemente numere întregi. Să se descompună în două liste, una care să conţină elementele pare, iar cealaltă elementele impare.

77. Să se realizeze un program care citeşte din fişierul GRAF.TXT matricea de adiacenţă a unui graf orientat (pe primul rând al fişierului se află numărul de noduri, iar pe următoarele linii – matricea) şi afişează acele noduri al căror grad interior este egal cu gradul exterior.

78. Se citeşte dintr-un fişier text un număr întreg. Să se afişeze în acelaşi fişier text inversul acestui număr.

79. Să se scrie un program în care să se calculeze expresia: E= ½+1/3+ ¼+….+1/n, unde n este un număr natural dat.

80. Să se scrie un program în care să se calculeze expresia E=1+1*2+1*2*3+….+1*2*3*…*n, unde n este un număr natural dat.

81. Să se scrie un program în care să se calculeze expresia E=12+42+72+….+(3*n-2)2, unde n este un număr natural dat.

82. Să se scrie un program în care să se calculeze expresia E=1*3+2*5+3*7+…+n*(2*n+1), unde n este un număr natural dat.

Page 7: Atestat_2009_algoritmi.doc

83. Se dau doi vectori u şi v cu n componente numere întregi. Să se calculeze produsul scalar al acestora, u[1]*v[1]+u[2]*v[2]+….+u[n]*v[n].

84. Fiind dat un vector v cu n componente numere întregi, să se afişeze de câte ori găsim două elemente consecutive egale între ele.

85. Fiind dat un vector v cu n componente numere întregi, să se insereze la mijlocul vectorului media aritmetică a elementelor sale.

86. Fiind dat un vector v cu n componente numere întregi, să se afişeze elementele cu proprietatea că suma cifrelor lor este divizibilă cu o valoare p dată.

87. Fiind dat un vector v cu n componente numere întregi, să se afişeze elementele pare de pe poziţiile impare din vector.

88. Fiind dat un vector v cu n componente numere întregi, să se afişeze toate perechile de elemente consecutive cu proprietatea că al doilea element al perechii este egal cu suma cifrelor primului.

89. Se dă un număr natural par. Să se descompună în sumă de două numere prime.

90. Să se afişeze toate modurile de aşezare a n regine pe o tablă de şah de dimensiune n*n, fără să se atace între ele(să nu fie pe aceeaşi linie, coloană sau diagonală). Valoarea lui n se citeşte de la tastatură