Sunteți pe pagina 1din 3

Fișă de recapitulare- teza sem I

Subiectul I. (Subprograme)

1. Subprogramul inserare are doi parametri:


 n, prin care primeste un număr natural (2≤n≤20);
 a, prin care primeste un tablou unidimensional care memorează un sir de n numere
naturale, fiecare cu cel mult 4 cifre. Cel puŃin un element al tabloului este număr
par. Subprogramul modifică tabloul, inserând înainte de fiecare termen par al sirului
numărul obinut prin împărțirea la 2 a valorii acestuia si furnizează, tot prin parametrii
n si a, valorile actualizate ale datelor primite. Scrieți în limbajul C/C++ definiția
completă a subprogramului. Exemplu: dacă n=7 si a=(1,4,5,3,82,6,2) atunci
după apel n=11 si a=(1,2,4,5,3,41,82,3,6,1,2).
2. Subprogramul nule are doi parametri: a, prin care primeşte un tablou unidimensional
cu maximum 100  de numere întregi, cu cel mult 4  cifre fiecare şi n, numărul de
elemente din tablou. Subprogramul rearanjează elementele tabloului unidimensional
astfel încât toate valorile nule să se afle la sfârşitul tabloului. Ordinea în cadrul secvenţei
de elemente nenule poate fi oricare. Tabloul modificat este furnizat tot prin parametrul a.
Exemplu: dacă n=6, a=(12,0,0,­3,­8,0), după apel, acesta ar putea fi: a=(12,­
3,­8,0,0,0). Scrieţi definiţia completă a subprogramului nule.
Subiectul II (Șiruri de caractere)

1. Se consideră un text cu cel mult 100  de caractere (litere mici ale alfabetului englez şi
spaţii), în care cuvintele sunt separate prin unul sau mai multe spaţii. Înaintea primului
cuvânt şi după ultimul cuvânt nu există spaţiu. Scrieţi un program C/C++ care citeşte de la
tastatură un text de tipul menţionat mai sus şi determină transformarea acestuia în memorie
prin eliminarea unor spaţii, astfel încât între oricare două cuvinte alăturate să rămână exact
un spaţiu. Programul afişează pe ecran textul obţinut. Exemplu: pentru textul in vacanta
plec la mare se obţine şi se afişează in vacanta plec la mare
2. Expresia strlen(”bine”) are valoarea: (4p.)
a. 1  b. 4  c. 5  d. 6
3. În secvenţa de instrucțiuni de mai jos variabilele s1 și s2 memorează câte un şir cu cel
mult 20 de caractere. Scrieţi ce se afişează pe ecran în urma executării secvenţei.
strcpy(s1,”bacalaureat”);
cout<<strlen(s1); 
strcpy(s2,s1+5); s2[3]=’\0’;
cout<<s2; 
4. Scrieţi un program C/C++ care citeşte de la tastatură o frază de maximum 255 de caractere
(litere mari ale alfabetului englez şi spaţii), ale cărei cuvinte sunt despărţite prin câte un spaţiu şi
afişează pe primul rând al ecranului numărul total al cuvintelor din frază, iar pe rândul următor
de ecran, în ordine alfabetică, scrise o singură dată, consoanele care au apărut în frază
(consoane sunt toate literele alfabetului englez, mai puţin A, E, I, O, U). Literele afişate sunt
separate prin câte un spaţiu. Exemplu: dacă se citeşte fraza LA BACALAUREAT
SUBIECTELE AU FOST USOARE
se va afişa:
6
BCFLRST
5. Fiind date două șiruri de caractere a şi b, îl numim pe a prefix al lui b dacă a este egal cu b
sau dacă b se poate obţine din a prin alipirea la dreapta a unor noi caractere. Variabilele a şi b pot
memora câte un șir cu cel mult 20 de caractere. Știind că variabila b a fost inițializată cu un șir
format dintr-un număr par de caractere, scrieţi o secvenţă de instrucţiuni în urma executării
căreia variabila a să memoreze un prefix al lui b a cărui lungime să fie jumătate din lungimea lui
b. Exemplu: dacă b memorează şirul aurari, atunci a memorează şirul aur.

Subiectul III (tipul struct)

1. Pentru o mașină, în variabila m se memorează următoarele informații: data cumpărării


(luna și anul) si marca.
Știind că expresiile C/C++ de mai jos au ca valori luna (un număr natural din intervalul [1,12])
și anul cumpărării mașinii (număr natural), respectiv marca acesteia (un șir de cel mult 20 de
caractere), scrieți definiția unei structuri cu eticheta masina, care permite memorarea
informațiilor pentru o mașină, și declarați corespunzător variabila m.
m.data.luna
m.data.an
m.marca

2. În declararea alăturată, câmpurile cat şi rest memorează câtul, respectiv restul împărțirii


a două numere naturale nenule.
struct impartire
{ int cat;
int rest;
}rezultat;
int x;
Scrieţi o secvență de instrucțiuni în urma executării căreia se memorează în variabila
rezultat  câtul și restul împărțirii întregi a numărului 2018  la numărul natural memorat în
variabila x, dacă acesta este nenul, sau se afișează pe ecran mesajul impartire
nepermisa, în caz contrar.
3.În declararea alăturată, variabila m memorează, pentru fiecare dintre cele 20 de
medicamente dintr-o farmacie, prețul, precum și date despre substanța activă specifică: doza și
codul acesteia. O expresie a cărei valoare reprezintă codul substanţei active specifice din primul
medicament este: struct medicament
{ float pret;
struct
{ int cod, doza;
}substanta;
}m[20];
a. m[0].cod.substanta  b. m[0].substanta.cod
c. m.cod.substanta[0]  d. m.substanta.cod[0]

4.Variabila d, declarată alăturat, memorează în câmpul mic cel mai mic divizor, strict mai mare
decât 1, al numărului natural din intervalul [2,102], memorat în câmpul nr.
struct divizor
{ int nr, mic;
} d;
Scrieţi o secvență de instrucțiuni în urma executării căreia, pentru numărul memorat în câmpul
nr  al variabilei d, se afișează pe ecran mesajul prim, dacă numărul este prim, mesajul
patrat  dacă numărul este pătratul unui număr prim, sau două numere naturale, separate
printr-un spațiu, reprezentând cel mai mic și cel mai mare dintre divizorii proprii pozitivi ai săi.
Divizorii proprii pozitivi ai unui număr sunt divizori pozitivi diferiţi de 1 şi de el însuşi.
Exemplu: dacă în câmpul nr se memorează numărul 12, iar în câmpul mic se memorează
numărul 2, se afișează pe ecran
2 6
iar dacă în câmpul nr se memorează numărul 9, iar în câmpul mic se memorează numărul 3,
se afișează pe ecran mesajul
patrat

S-ar putea să vă placă și