ATESTAT - Pascal sau C++
Cap. 1 Algoritmi elementari
- Se citesc numere de la tastatura
pana la intalnirea lui 0. Afisati suma numerelor care au
exact k divizori (k se citeste de la tastatura). Restrictii:
- Se citesc de la tastatura n
numere naturale mai mici decat 100. Afisati produsul cifrelor
diferite de zero ale numerelor citite. Restrictii:
- Se citeste un numar natural
n (n). Afisati numarul in baza b (b se
citeste de la tastatura). Restrictii: .
- Scrieti un program care
determina toate numerele naturale perfecte mai mici decat un
numar natural n citit de la
tastatura. Un numar este perfect daca este egal cu suma
divizorilor sai. Exemplu: 28 = 1 + 2 + 4 + 7 + 14
- Se citesc dintr-un fisier text, n
numere naturale formate din 3 cifre. Afisati in alt fisier
mesajul "Este palindrom" daca numarul format din cifra din
mijloc a fiecarui numar citit este palindrom. Exemplu: daca n=5
si cele n numere sunt:123, 345, 654, 447, 921 numarul care se obtine este 24542 si este palindrom, sau
daca n=5 si numerele sunt : 123, 345, 654, 437, 921, atunci numarul
24532 nu este palindrom
- Dintr-un fisier text se citesc n
numere naturale pozitive . Afisati pe ecran toate numerele care
indeplinesc conditia ca oglinditul lor sa fie un numar
prim. Restrictii: Numerele nu vor contine cifra 0.
- Se da un numar natural n
(n<100.000.000) format din cifre nenule.
- Determinati numerele naturale n1
si n2 formate din cifrele pare, respectiv impare din n (in ordinea
din numar)
- Afisati cel mai mare
numar care poate fi obtinut din concatenarea numerelor n1
si n2.
- Se da un numar natural n
(n<100.000.000). Sa se afiseze descompunerea lui n ca
suma de numere naturale consecutive incepand de la 1. In caz ca
nu exista solutie, se va afisa un mesaj corespunzator.
Exemplu: n=15, n=1+2+3+4+5
- Se da un numar natural n
(n<100.000.000). Sa se afiseze toate descompunerile lui n ca
suma de numere naturale consecutive. Exemplu:
n=15n=1+2+3+4+5=4+5+6=7+8
- Se citeste un numar natural n. Sa se
determine cel mai apropiat numar prim fata de n. Exemplu: daca n= 20 cel
mai apropiat numar prim este 19, iar daca n=22 rezultatul va fi 23.
- Se citesc doua valori a si b care
reprezinta capetele unui intreval. Sa se construiasca un subprogram care
primeste prin doi parametri capetele intervalului si intoarce printr-un
alt parametru numarul de valori palindrom. Exemplu daca a=10 si b=20
singurul numar palindrom din intervalul dat este 11 si funtia
trebuie sa returneze valoarea 1.
- Sa se scrie o functie care verifica daca
un numar este sufixul patratului sau Exemplu: n=25 si patratul sau 625
- Sa se determine si sa se
afiseze pe ecran toate numerele naturale de cel putin doua
cifre formate numai din cifre pare, distincte.
- Sa se genereze primele n numere prime, n
citit de la tastaura.
- Sa se determine suma tuturor numerelor
formate numai din cifre impare distincte.
- Se citesc de la tastatura
numerele x si y. Afisati divizorii comuni ai acestora.
- Se dau 2 numere naturale a si
b.(0<=a<=b<100.000.000 . Sa se afiseze numarul de cifre
ale tuturor numerelor din intervalul [a,b].
Cap.2 Tablouri
- Fisierul text 'matrice.in"
contine:
- pe prima linie doua numere naturale n si m care
reprezinta numarul de linii, respectiv numarul de coloane ale
unui tablou bidimensional A(n x m).
- pe urmatoarele n linii cate m numere naturale din intervalul
[0,9].
Elementele de pe fiecare linie reprezinta cifrele unui numar
intr-o anumita baza. Determinati si afisati
pentru fiecare linie:
a) baza minima in care cifrele respective pot reprezenta un
numar.
b) valoarea obtinuta dupa conversia numarului in
baza 10, daca se considera ca numarul este reprezentat in baza determinata
la punctul a
- Din fisierul de intrare tab2.in
se citeste de pe prima linie n (0<n<100) si de pe
urmatoarele n linii cele n*n elemente ale unei matrici patratice
(toate elementele matricii sunt numere naturale mai mici decat 32.767).
Scrieti programul care creeaza fisierul text tab2.out care
contine:
pe
prima linie acele numere din matrice care au cel putin doi divizori strict
mai mici decat numarul in sine;
pe
linia a doua din fisier toate numerele prime din matrice.
- Realizati un program care
determina cel mai mare divizor comun al elementelor situate pe fiecare
coloana a unei matrice patratice. Matricea se va citi din
fisier text care are urmatoarea structura: pe prima linie 2
numere n si m care reprezinta numarul de linii si de coloane
si apoi cele n linii ale matricei.
- Fie multimea de numere M=. Un tablou cu n linii si n coloane se numeste
patrat latin daca fiecare element al multimii M apare o
data si numai o data pe fiecare linie si pe fiecare
coloana. Sa se scrie programul care citeste din
fisierul "tab5.in" de pe prima
linie n si de pe urmatoarele n linii elementele tabloului
si scrie in fisierul de iesire tab5.out mesajul "Tabloul
este patrat latin" sau "Tabloul nu este patrat latin". Exemplu:
pentru tab5.in (4//1 2 3 4//4 1 2 3//3 4 1 2//2 3 4 1) se va scrie in
fisierul tab5.out mesajul ("Tabloul este patrat latin").
- Scrieti programul care
creeaza fisierul tab1.out ce contine pe prima sa linie, in
ordine, toate literele mari ale alfabetului englez, cu exceptia
vocalelor, aflate in alfabet dupa o litera mare citita de
la tastatura. Exemplu: daca se citeste litera R, atunci
fisierul tab1.out va contine: STVWXYZ.
- Se citeste dintr-un fisier
text o matrice cu n linii si m coloane cu componente numere intregi. Se
cere sa se afiseze numarul/numerele de ordine a liniilor
din matrice care au cele mai multe componente distincte.
- Se considera o matrice A(n, n) cu
p elemente nenule. Matricea este memorata economic sub forma a 3
vectori V, L, C cu cate p elemente ce retin valoarea, linia, coloana
fiecarui element nenul din matrice. Sa se scrie programul care
citeste n, p si vectorii dintr-un fisier text si
construieste matricea A corespunzatoare.
- Se citeste de la tastatura
un numar natural N cuprins intre 1 si 20
inclusiv. Sa se constriasca o matrice patratica de
dimensiune N care sa memoreze primele N*N numere prime.
Ordinea de completare a matricei va fi spirala in sens invers
trigonometric. Se considera ca primul numar prim este 2.
Matricea rezultata se va scrie in fisierul "matrice.out".
Exemplu
Daca N=4 atunci matricea va fi:
2357
37 41 43 11
31 53 47 13
29
23 19 17
- Sa se construiasca un program care
permite inlocuirea elementelor unui vector cu suma factorialelor cifrelor
lor daca aceasta suma nu se afla intr-un interval [x,y], citite de la
tastatura.
- Se considera un vector cu n elemente
numere reale. Inserati in fata fiecarui element negativ un element de
valoare 0. Elementele vor fi afisate cu 2 zecimale. Exemplu : n=4 si
vectorul : (2.32, -4.34, -9.2, 1.0) se va afisa : 2.23 0.00 -4.34 0.00 -9.20 1.00
- Se citeste din fisierul text
matrice.txt o matrice patratica, se imparte matricea in patru zone, din
care lipsesc diagonalele. Se cere:
a. suma
elementelor din prima zona,
b. afisarea numerelor prime din zona a doua
c. suma elementelor pare din zona 3
- Se da o matrice patratica de
dimensiune n citita din fisierul matrice.in Se cere sa se bordeze
matricea cu cel mai mare divizor comun de pe fiecare linie.
- Se da un vector cu n elemente numere
intregi. Sa se elimine din vector toate elementele care au mai mult de 2
divizori proprii.
- Se considera o multime de n numere
reale. Se cere o submultime a sa , cu un numar maxim de elemente, astfel
incat suma elementelor sale sa fie maxima. Exemplu: daca n=5 si vectorul
contine: -3, 2, 1, 5, -6 suma maxima este 8 iar submultimea care o
formeaza este alcatuita din valorile : 2,1,5.
Cap. 3
Siruri de caractere, structuri
1.
Se citesc de la tastatura 3
siruri de caractere s, s1 si s2. Sa se inlocuiasca toate
aparitiile sirului s1 din sirul s cu sirul s2.
2.
Se citeste un text de la tastatura. Sa se
insereze dupa fiecare vocala codul ASCII corespunzator acesteia.
Afisati textul modificat.
3.
Se citeste un text de la tastatura. Cuvintele se
considera separate prin spatiu, virgula sau punct si
virgula. Numarati cate cuvinte contine textul si cate dintre acestea sunt palindrom. Un
cuvant se considera ca fiind palindrom, daca ignorand
diferentele dintre minuscule si majuscule, este identic cu cuvantul
obtinut prin citirea caracterelor de la dreapta la stanga.
4. Se citeste de la tastatura
o propozitie terminata cu punct. Cuvintele din propozitie sunt
separate prin caracterul virgula si prin caracterul spatiu.
Dupa virgula poate exista si spatiu. Se cere:
a.
sa se afiseze cuvintele din propozitie,
fiecare pe cate un rand. Cuvintele vor fi afisate cu litere mici,
exceptand prima litera care va fi majuscula.
b.
Sa se numere si sp se afiseze cate cuvinte
contine aceasta propozitie.
- La un concurs de informatica au
participat n elevi, pentru fiecare elev cunoscandu-se numele, liceul de
provenienta si nota obtinuta. Realizati un
program care citeste datele elevilor participanti, apoi
tipareste numele elevilor cu cea mai mare nota, media
generala a concurentilor precum si numele elevilor ce au
obtinut un punctaj peste aceasta medie.
- Sa se descompuna un
numar in factori primi, memorand rezultatul sub forma unui vector de
inregistrari: fiecare inregistrare va cuprinde doua campuri,
unul indicand factorul prim, iar celalalt puterea la care apare in
descompunere. Sa se afiseze factorii primi care apar la puterea
cea mai mare.
- Se citesc din fisier text un text
alcatuit din unul sau mai multe cuvinte. Cuvintele sunt separate
printr-un singur spatiu. Sa se afiseze aceste cuvinte in
ordine alfabetica si apoi sa se numere cate dintre ele incep
si se termina cu aceeasi litera.
- Sa se elimine toate
aparitiile in exces ale caracterului spatiu dintr-un text . De
exemplu, daca textul initial este "Examenulla informatica " , se va obtine textul "Examenul
la informatica".
- Intr-un fisier text sunt pastrate
informatii despre elevii unei clase. Pe primul rand este inregistrat
numarul n de elevi din
clasa. De pe urmatoarele n
linii se vor citi pentru fiecare
elev: numele si CNP-ul. Sa se afiseze
numele si ziua nasterii celui mai tanar elev din
clasa. Daca sunt mai multi elevi cu aceeasi
varsta minima, se vor afisa toti elevii
respectivi. (Codul numeric personal este format din 13 caractere,
astfel: saallzzxxxxxx, unde s precizeaza sexul persoanei respective
si poate lua valoarea 1 pentru masculin si 2 pentru feminin, iar
aa reprezinta anul , ll reprezinta luna, zz reprezinta ziua din
data de nastere.)
Cap.4 Recursivitate
1. Se citesc de la
tastatura doua numere naturale n si k (n≥k, n>0).
Sa se calculeze, recursiv, nk si Cnk.
2. Se citeste o valoare naturala n . Se cere sa
se scrie un subprogram recursiv care sa calculeze valoarea expresiei:
a.
E1=1*3 - 2*4 + 3*5 - 4*6+.+(-1)n+1
*n*(n+2)
b.
E2=2*4*6*8*..*(2*n)
3. Se citeste un
numar intreg si pozitiv. Se cere sa se scrie cate un subprogram
recursiv care sa determine:
a.
Suma cifrelor impare ale numarului
b.
Daca numarul este bine ordonat crescator
4. Se citeste o valoare naturala n . Se cere sa
se scrie cate un subprogram recursiv care sa calculeze valoarea expresiei:
a.
E1=1 *4*7*.*(3n-2)
b.
E2=2 - 4 + 6 +.+(-1)n+1 (2*n)
5. Se citesc doua numere
naturale diferite a si b. Se cere:
a.
Definiti o functie recursiva care sa calculeze valoarea ab.
b.
Definiti o functie recursiva care sa calculeze suma valorilor din
intervalul [a, b]
6. Se citeste de la
tastatura un vector cu n elemente numere intregi. Se cere:
a.
Scrieti o functie recursiva care
calculeaza produsul elementelor impare din vector.
b.
Scrieti o functie recursiva care
determina daca elementele situate simetric fata de mijlocul vectorului sunt egale.
7. Se citeste de la
tastatura un vector cu n elemente numere intregi. Se cere:
a.
Scrieti o functie recursiva care
calculeaza suma elementelor din vector
b.
Scrieti o functie recursiva care
verifica daca exista cel putin o valoare pozitiva in
vector .
8. Se citeste un
sir de caractere. Realizati un subprogram recursiv care
returneaza acest sir oglindit, din care lipsesc consoanele.
Cap. 5. Backtracking
- Sa se determine toate
sirurile de n numere intregi (x1, x2, , xn)
astfel incat x1=a, xn=b (n,a si b citite de la
tastatura, |a-b|≤n-1), iar diferenta dintre orice
doua numere vecine este cel mult 1. Scrierea se va face in
fisierul numere.txt. Sa se precizeze numarul de
solutii ale problemei.
- Sa se genereze toate sirurile de n
(n<=6) note muzicale din multimea . Fiecare sir
va fi afisat pe cate o linie,
acestea se pot repeat in cadrul unui sir.
- Un student are de sustinut intr-o
sesiune n exemene, numerotate cu numere de la 1 la n, in functie de
ordinea in care trebuie sa le sustina. Sesiunea dureaza un numar de m zile
consecutive (n<=[m/2]<=10), iar studentul paote sa-si programeze
fiecare examen in ce zi doreste, respectand doar ordinea acestora.In plus
el nu doreste sa aiba de sustinut doua examnene in zile consecutive. Sa se
genereze toate programarile pe zile ale examenelor in conditiile dorite de
student.Zilele sesiunii vor fi numerotate de la 1 la m.
- Sa se afiseze toate numerele
naturale de n cifre care contin k cifre de 1. Exemplu: pentru n=3 si k=2 se obtin solutiile
101, 110 , 112, 113,., 911.
- Se citeste n, un numar
natural. Sa se afiseze toate numerele naturale, formate din
cifre distincte nenule, care sunt mai mici decat n si care au
aceiasi suma a cifrelor ca si n. Exemplu: daca n=312 atunci trebuie afisate numerele 123,
132, 15, 213, 231, 24, 42, 51, 6
- Se citeste de la tastatura
un cuvant de maxim 6 litere. Sa se afiseze toate anagramele
sale. Exemplu: daca se
citeste cuvantul mar atunci
se va afisa: mar, mra, amr,
arm, rma, ram.
- Sa se genereze toate
modalitatile de asezare pe tabla de sah a n regi,
fiecare pe cate o linie, astfel incat sa nu se atace intre ei.
Solutiile se vor afisa in fisierul text REGI.OUT si se vor
numerota.
- Se considera un numar
natural n (citit de la tastatura) din intervalul (1100).
Creati programul care scrie in
fisierul de iesire back1.out toate numerele naturale de n cifre
cu produsul cifrelor egal cu 8. Exemplu: pentru n=3, in fisierul de
iesire se vor scrie, pe cate o linie, urmatoarele secvente:(118//124//142//181//214//222//241//412//421//811).
- Sa se genereze toate sirurile
strict crescatoare formate din numere naturale cu proprietatea
ca primul element din sir este n iar ultimul element din
sir este n+p. Numerele n si p se citesc de la tastatura
(0<n<20 si 0<p<16). Fiecare sir generat va fi scris
pe cate o linie, in fisierul de iesire back2.out, elementele
sirului fiind separate prin cate un spatiu. Exemplu: pentru n=7
si p=3 se vor afisa, nu neaparat in aceasta ordine
sirurile: (7 8 9 10//7 8 10//7 9 10//7 10) .
Cap. 6. Liste
1. Din fisierul
lista.txt se citesc mai multe numere naturale. Sa se creeze o lista
liniara simplu inlantuita cu numerele cu suma cifrelor k
(citit de la tastatura) si sa se afiseze. Sa se
stearga din lista numerele pare si sa se afiseze
lista.
2. Se citeste N natural.
Sa se construiasca o lista care contine divizorii lui N.
(toti). Se citeste de la tastatura un numar X. Sa se
afiseze elementele din L care sunt prime cu X.
3. Sa se creeze un
arbore binar avand drept chei numere intregi, citite de la tastatura.
Pentru acest arbore afisati cheile in postordine, afisati
cheile din nodurile care au exact un succesor, fie drept, fie stang.
Determinati cate noduri terminale contine arborele.
4. Intr-un fisier text
sunt asezate numere intregi pe o singura linie. Numerele sunt separate
printr-un singur spatiu. Se cere sa se construiasca o lista
cu numerele din fisier care sa respecte urmatoarele reguli:
a.
daca numarul curent citit din fisier nu se
mai gaseste in lista atunci el va fi adaugat la
sfarsitul listei, altfel el va fi adaugat langa numarul
care are aceeasi valoare cu el;
b.
se va citi de la tastatura un numar intreg k
si vor fi sterse din lista toate elementele care sunt egale cu k;
c.
Se va afisa lista inainte si dupa
operatia de stergere.
5. Sa se scrie un program
care construieste un arbore binar cu n noduri avand drept chei numere
intregi citite de la tastatura . Sa se afiseze:
a.
arborele construit in preordine, postordine, inordine
b.
suma cheilor pare
6. Sa se scrie un program
care construieste un arbore binar cu n noduri avand drept chei numere
intregi citite de la tastatura . Sa se afiseze:
a.
valoarea minima si maxima din arbore
b.
cheile din nodurile care au exact un succesor(fie stang,
fie drept).
7. Sa se scrie un program
care construieste o lista simplu inlantuita cu n
noduri avand drept chei numere intregi citite de la tastatura . Se citesc apoi
doua numere intregi in variabilele x si y. Sa se inlocuiasca
toate aparitiile valorii x in lista cu valoarea y. Afisati
lista inainte si dupa modificare.
Cap. 7. Grafuri
1. Se citeste de la
tastatura o fraza. Sa se construiasca un arbore binar de
cautare cuprinzand caracterele din fraza si frecventele lor
de aparitie. Sa se afiseze pe ecran caracterele (in ordinea
codurilor ASCII), impreuna cu frecventele lor de aparitie.
2. Consideram un (di)graf si
o functie de cost atasata muchiilor, se cere sa se determine drumurile de cost
minim de la un nod i0 la toate nodurile grafului precum si costurile acestor
drumuri.
3.
Se citeste matricea de adiacenta a unui
graf orientat. Sa se afiseze toate nodurile pentru care d+(x)=d_(x)
(gradul exterior este egal cu gradul interior). Pentru un nod x citit sa se
listeze toate nodurile adiacente cu acesta.
4.
In fisierul text graf1.in sunt memorate pe prima
linie n (numarul de noduri al unui graf neorientat G) si m
(numarul de muchii ale grafului) iar pe urmatoarele m linii perechi
de numere care reprezinta muchiile lui. Se cere sa se afiseze,
in fisierul graf1.out, o parcurgere in adancime a grafului plecand din
nodul de grad maxim.
5. Se defineste o muchie
a unui graf neorientat ca o inregistrare cu trei campuri: cele doua
varfuri extremitati si un cost asociat muchiei (un numar
intreg). Definim un graf neorientat ca un vector de muchii. Fiind dat vectorul
de muchii al unui graf neorientat G=(X,U) cu m muchii si n varfuri,
sa se afiseze matricea de adiacenta si muchia
(muchiile) de cost minim.
6. Fie un graf G cu n varfuri
a carui matrice de adiacenta se citeste dintr-un
fisier text. Sa se determine daca graful G este neorientat. In
cazul in care G este un graf neorientat, sa se verifice daca este
graf regulat.
7. Se citeste dintr-un
fisier text matricea de adiacenta a unui graf neorientat cu n
varfuri. Sa se afiseze toate componentele conexe, precum si
numarul acestora. La fiecare componenta conexa sa se precizeze cate
varfuri contine.
8. Sa se verifice
daca o secventa de noduri data reprezinta un drum
elementar sau neelementar intr-un graf orientat. Numarul de noduri ale
grafului, matricea de adiacenta si secventa de noduri se
citesc dintr-un fisier text.