Sunteți pe pagina 1din 13

1.

Subprograme
1 Prelucrări numerice
2 Prelucrarea tablourilor unidimensionale
3 Prelucrarea tablourilor bidimensionale

1 Prelucrări numerice

1. Scrieţi definiţia completă a unui subprogram sub, cu un parametru, subprogram care:


- primeşte prin intermediul parametrului a un număr natural cu cel mult 4 cifre (a>1)
- returnează suma exponenţilor divizorilor primi din descompunerea în factori primi a valorii
parametrului a.
Exemplu: pentru a=180 subprogramul va returna valoarea 5, deoarece a=22*32*5 şi
2+2+1=5.
Folosind apeluri utile ale subprogramului sub să se afişeze numerele prime din fişierul
date.in care memorează numere întregi de cel mult 4 cifre fiecare

2. Scrieţi definiţia completă a unui subprogram sub, cu un parametru, subprogram care:


- primeşte prin intermediul parametrului a un număr natural cu cel mult 4 cifre (a>1)
- returnează suma divizorilor valori parametrului a.
Exemplu: pentru a=6 subprogramul va returna valoarea 12.
Folosind apeluri utile ale subprogramului sub să se afişeze numerele prime din tabloul
unidimensional v care memorează numere întregi de cel mult 4 cifre fiecare

3. Scrieţi definiţia completă a unui subprogram div, cu un parametru, subprogram care:


- primeşte prin intermediul parametrului a un număr natural cu cel mult 4 cifre (a>1)
- returnează suma divizorilor valori parametrului a.
Exemplu: pentru a=6 subprogramul va returna valoarea 12.
Folosind apeluri utile ale subprogramului div să se afişeze numerele până la un n natural citit
care au suma divizorilor un număr prim.
Exemplu: dacă n=17 atunci se va afişa: 2 4 16

4. Subprogramul cifra, cu doi parametri, primeşte prin intermediul parametrului a un număr


natural cu cel mult 8 cifre şi prin intermediul parametrului b o cifră; subprogramul returnează
numărul de apariţii ale cifrei b în scrierea numărului a.
Exemplu: pentru a=123834 şi b=3, subprogramul va returna valoarea 2. Folosind apeluri
utile ale subprogramului cifra să se determine:
a. Dacă cifra x se găseşte in numărul a
b. Dacă un număr a are cifre distincte.
c. Cea mai mare cifră a unui număr
d. Cel mai mare număr care are aceleaşi cifre cu un număr a citit
e. Dacă un număr a are cifre impare
f. Dacă un număr are toate cifrele egale

5. Subprogramul cifra, cu doi parametri, primeşte prin intermediul parametrului a un număr


natural cu cel mult 8 cifre şi prin intermediul parametrului b o cifră. Subprogramul
returnează prin intermediul parametrului a valoarea lui a din care s-au eliminat cifrele egale
cu b.
Exemplu: după apelul subprogramului cifra pentru a=123834 şi b=3, valoarea lui a va fi
1284. Folosind apeluri utile ale subprogramului cifra să se elimine cifrele pare din fiecare
dintre componentele unui tablou unidimensional v care memorează n (n≤100) numere întregi
cu până la 8 cifre fiecare. Dacă un număr din v conţine doar cifre pare, acesta nu se va mai
afişa.

6. Să se scrie definiţia subprogramului cifra, care primeşte prin intermediul celor doi parametri
ai săi două numere întregi n şi k (1≤n≤1000000), (1≤k≤5) şi returnează cifra de rang k a
numărului n. Rangul unei cifre este numărul său de ordine, numerotând cifrele de la dreapta
la stânga; cifra unităţilor are rangul 1. Dacă numărul k este mai mare decât numărul de cifre a
lui n atunci funcţia returnează valoarea -1.
Exemplu: în urma apelului calcul(9748, 3) se va returna 7
Să se scrie un program care citeşte două numere naturale x şi y mai mici sau egale cu
1000000 şi determină dacă au un prefix comun (o secvenţă de cifre identice începând cu
cifra din stânga).
Exemplu: pentru x=2794563 şi y=279421 se afişează: 2794

7. Subprogramul putere, cu doi parametri, primeşte prin intermediul parametrilor a şi b două


numere naturale cu cel mult 8 cifre fiecare. Subprogramul returnează cel mai mare număr
mai mic sau egal cu a care reprezintă o ridicare la putere a numărului b.
Exemplu: după apelul subprogramului cifra pentru a=130 şi b=5 valoarea returnată de
subprogram va fi 125.
Din fişierul date.in se citesc: de pe prima linie un număr natural n (n≤100) apoi de pe
următoarele n linii câte 3 numere naturale x, y, z de cel mult 8 cifre fiecare. Folosind
apeluri utile ale subprogramului putere să se afişeze pentru fiecare set cel mai mare număr
de forma zk din intervalul [x,y]. În cazul în care nu există astfel de numere într-un interval se
va afişa valoarea 0.
Exemplu: pentru valorile
4
10 36 2
100 130 5
40 50 6
7 83 9
Se afişează valorile: 32 125 0 81

8. Se numeşte cifra de control a unui număr cifra care se obţine din însumarea cifrelor unui
număr, apoi suma cifrelor acestei sume, ş.a.m.d. până se obţine un număr format dintr-o
singură cifră. Spre exemplu pentru numărul 589 cifra de control este 4, astfel: 5+8+9=22,
apoi 2+2=4
Să se definească un subprogram sumacif care primeşte prin parametrul a un număr natural cu
cel mult nouă cifre şi care returnează suma cifrelor numărului a.
Folosind apeluri utile ale subprogramului sumacif:
a. să se determine cifra de control a unui număr x citit.
b. să se afişeze numerele dintr-un tablou unidimensional v care memorează cel mult 100
de numere întregi de cel mult nouă cifre fiecare, pe grupe având aceeaşi cifră de
control.
Exemplu: pentru v=(23, 8, 98, 116, 5, 401, 96, 78783) se afişează:
23, 5, 401
8, 98, 116,
96, 78783

9. Să se definească un subprogram divizori care returnează numărul de divizori ai parametrului


x, număr natural cu cel mult patru cifre. Folosind apeluri ale subprogramului divizori să se
afişeze numărul cu cei mai mulţi divizori până la un n citit.
Exemplu. Pentru n=100 se afişează 60 (care are 12 divizori)

10. Un număr natural se numeşte palindrom dacă parcurgând cifrele de la stânga la dreapta se
obţine acelaşi număr parcurgând cifrele de la dreapta la stânga. Spre exemplu, numărul
25152 este palindrom. Însumând la un număr a inversul său şi repetând operaţia de un număr
de ori se obţine întotdeauna un număr palindrom. Spre exemplu: dacă a=78 şi se aplică
operaţiile de însumare repetată se obţine numărul palindrom 4884 ca mai jos:
78
78+87= 165
165+561=726
726+627=1353
1353+3531=4884
Să se definească un subprogram invers care primeşte prin parametrul a un număr natural cu cel
mult nouă cifre şi care returnează prin parametrul x inversul numărului a (numărul obţinut prin
parcurgerea cifrelor lui a de la dreapta la stânga). Folosind apeluri utile ale subprogramului
invers să se genereze un număr palindrom după modelul de mai sus.

11. Să se definească un subprogram prim care primeşte ca parametru un număr natural x de cel
mult 4 cifre şi care returnează valoarea 1 daca x este număr prim altfel întoarce valoarea 0.
Folosind apeluri utile ale subprogramului prim să se afişeze:
a. Numerele prime dintr-un tablou unidimensional v care prelucrează 100 de numere
naturale de cel mult patru cifre fiecare
b. Numerele prime dintr-un tablou bidimensional a cu 20 de linii şi 30 de coloane
c. Numerele prime din fişierul date.in
d. Primul şi ultimul număr prim din fişierul numere.in. În cazul în care sunt mai puţin de
două numere prime în fişier se va afişa un mesaj.
e. Primele n numere prime
f. Cel mai mare număr prim mai mic sau egal decât un număr natural nenul x citit
g. Cel mai apropiat număr prim de un număr natural nenul x citit

12. Două numere prime impare consecutive se numesc prime gemene. Să se definească un
subprogram prim care primeşte ca parametru un număr natural x de cel mult 4 cifre şi care
returnează valoarea 1 daca x este număr prim altfel întoarce valoarea 0. Folosind apeluri utile
ale subprogramului prim să se afişeze primele n perechi de numere prime gemene.
Exemplu: pentru n=4 se afişează: (3,5), (5,7), (11,13), (17,19)
13. Să se definească un subprogram suma_div care primeşte ca parametru un număr natural
nenul cu cel mult 8 cifre. Subprogramul returnează suma divizorilor numărului n.
Două numere m şi n se numesc numere prietene dacă suma divizorilor lui m (mai puţin
valoarea m) este egală cu valoarea lui n şi invers. Exemplu m=220 şi n=284 sunt prietene
pentru că m=1+2+71+142 (suma divizorilor lui 284) şi
n=1+2+4+5+10+11+20+22+44+55+110 (suma divizorilor lui 220). Folosind apeluri ale
subprogramului suma_div să se afişeze primele n perechi de numere prietene.

14. Să se definească un subprogram invers care primeşte ca parametru un număr natural x de cel
mult 9 cifre şi care returnează inversul lui x. Folosind apeluri utile ale subprogramului invers
să se afişeze:
a. Numerele palindrom dintr-un tablou unidimensional v care prelucrează 100 de numere
naturale de cel mult 9 cifre fiecare
b. Numerele palindrom dintr-un tablou bidimensional a cu 20 de linii şi 30 de coloane
c. Numerele palindrom din fişierul date.in
d. Primul şi ultimul număr palindrom din fişierul numere.in. În cazul în care sunt mai
puţin de două numere palindrom în fişier se va afişa un mesaj.

15. Scrieţi definiţia completă a unui subprogram sub, cu un parametru, subprogram care:
- primeşte prin intermediul parametrului a un număr natural cu cel mult 4 cifre (a>1)
- returnează cel mai mare divizor prim al valorii parametrului a.
Exemplu: pentru a=26 subprogramul va returna valoarea 13.
Folosind apeluri utile ale subprogramului sub să se afişeze numerele prime din fişierul
date.in care memorează numere întregi de cel mult 4 cifre fiecare

16. Să se definească un subprogram calcule care primeşte prin parametrul a un număr natural cu
cel mult nouă cifre şi care returnează prin parametrii x şi z cea mai mare respectiv cea mai
mică dintre cifrele numărului a. Folosind apeluri utile ale subprogramului calcule să se
determine:
a. Dacă un număr a are toate cifrele identice
b. Pentru n numere citite intervalul de valori care include toate cifrele numerelor citite.
Exemplu: pentru n=5 si valorile: 6767, 56373, 45755, 333, 774 se afişează perechea 3, 7

2 Prelucrarea tablourilor unidimensionale

17. Să se definească un subprogram sub care primeşte ca parametri: un tablou unidimensional v


care memorează 100 de numere întregi de cel mult patru cifre fiecare, un număr natural n
(n≤100) reprezentând numărul de componente al tabloului şi un număr întreg x de cel mult
patru cifre. Subprogramul returnează numărul de componente din v egale cu x. Folosind
apeluri utile ale subprogramului sub să se determine:
a. Daca o valoare x se găseşte într-un tablou v folosind apeluri utile ale subprogramului
sub
b. Daca tabloul v are componentele distincte
c. Care sunt valorile care apar cu frecvenţă maximă în tabloul v
d. Să se afişeze fiecare valoare din tablou o singură dată şi pentru fiecare valoare să se
afişeze şi frecvenţa acesteia în tablou

18. Să se definească un subprogram sub care primeşte ca parametri: un tablou unidimensional v


care memorează 100 de numere întregi de cel mult patru cifre fiecare, un număr natural n
(n≤100) reprezentând numărul de componente al tabloului şi un număr întreg x de cel mult
patru cifre. Subprogramul returnează numărul de componente din v egale cu x. Folosind
apeluri utile ale subprogramului sub să se determine dacă două tablouri unidimensionale a şi
b cu n componente (numere întregi de cel mult patru cifre fiecare) memorează aceleaşi
valori.
Exemplu: pentru a=(2,3,2,2,2,1,1) b=(1,1,2,2,3,2,2), n=7 se afişează DA

19. Să se definească un subprogram sub care primeşte ca parametri: un tablou unidimensional v


care memorează 100 de numere întregi de cel mult patru cifre fiecare, un număr natural n
(n≤100) reprezentând numărul de componente al tabloului şi un număr întreg x de cel mult
patru cifre. Subprogramul returnează numărul de componente din v mai mici ca x. Folosind
apeluri utile ale subprogramului sub să se determine:
a. Daca un tabloul v are componentele distincte
b. Care este valoarea minima din tablou
c. Care este valoarea maximă din tablou

20. Să se definească:
a. un subprogram poz care primeşte ca parametri: un tablou unidimensional v care
memorează 100 de numere întregi de cel mult patru cifre fiecare, un număr natural n
(n≤100) reprezentând numărul de componente al tabloului şi un număr întreg x de cel
mult patru cifre. Subprogramul returnează indicele primei componente din v mai mare
ca x sau -1 dacă toate componentele din v au valori mai mici decât x.
b. Un subprogram inserare care are ca parametri: un tablou unidimensional v care
memorează 100 de numere întregi de cel mult patru cifre fiecare, un număr natural n
(n≤100) reprezentând numărul de componente al tabloului, un număr întreg p (p≤n)
reprezentând indicele unei componente din v şi un număr întreg x de cel mult patru
cifre. Subprogramul inserează valoarea x pe poziţia p în tabloul v actualizând numărul
de componente n.
Scrieţi un program care citeşte cele n numere întregi de cel mult patru cifre fiecare şi care
folosind apeluri utile ale subprogramelor poz şi inserare le memorează ordonat crescător în
componentele unui tablou v.

21. Să se definească un subprogram sub care primeşte ca parametri: un tablou unidimensional v


care memorează 100 de numere întregi de cel mult patru cifre fiecare, un număr natural n
(n≤100) reprezentând numărul de componente al tabloului şi un număr întreg x de cel mult
patru cifre. Subprogramul returnează valoarea 1 dacă valoarea x se găseşte în tabloul v altfel
returnează valoarea 0. Fie a şi b două tablouri unidimensionale cu m respective n
componente distincte. Folosind apeluri utile ale subprogramului sub să se determine:
a. Intersecţia a două mulţimi memorate în tablourile a şi b
b. Diferenţa a două mulţimi memorate în tablourile a şi b
c. Reuniunea a două mulţimi memorate în tablourile a şi b
22. Să se definească:
a. un subprogram sub1 care primeşte ca parametri: un tablou unidimensional v care
memorează 100 de numere întregi de cel mult patru cifre fiecare şi un număr natural n
(n≤100) reprezentând numărul de componente al tabloului. Subprogramul realizează
permutarea circulară la stânga a componentelor tabloului.
Exemplu: daca v=(1,2,3,4,5,6) şi n=6 după apel v=(2,3,4,5,6,1)
b. un subprogram sub2 care primeşte ca parametri: două tablouri unidimensionale a şi b
care memorează 100 de numere întregi de cel mult patru cifre fiecare şi un număr
natural n (n≤100) reprezentând numărul de componente pentru fiecare dintre tablouri.
Subprogramul returnează valoarea 1 daca cele două tablouri memorează aceleaşi valori
în aceeaşi ordine, altfel returnează valoarea 0.
Exemplu: pentru a=(6, 9, 4), b=(6, 9, 4), n=3 sub2 returnează valoarea 1
Fie a şi b două tablouri unidimensionale cu n componente fiecare (numere întregi de
cel mult patru cifre). Folosind apeluri utile ale subprogramelor sub1 şi sub2 să se
determine: dacă tabloul b se poate obţine din tabloul a printr-o secvenţă de permutări
circulare ale elementelor tabloului a.
Exemplu: pentru a=(6, 9, 4, 3, 1), b=(3, 1, 6, 9, 4) se afişează DA.

23. Să se definească:
a. un subprogram sub1 care primeşte ca parametri: un tablou unidimensional v care
memorează 100 de numere întregi de cel mult patru cifre fiecare şi un număr natural n
(n≤100) reprezentând numărul de componente al tabloului. Subprogramul returnează
prin parametrul p indicele primei valori pare din tabloul v.
Exemplu: daca v=(11,24,3,4,51,6) şi n=6 după apel p=2
b. un subprogram sub2 care primeşte ca parametri: un tablou unidimensional v care
memorează 100 de numere întregi de cel mult patru cifre fiecare şi un număr natural n
(n≤100) reprezentând numărul de componente al tabloului. Subprogramul returnează
prin parametrul q indicele ultimei valori impare din tabloul v.
Exemplu: daca v=(11,24,3,4,51,6) şi n=6 după apel q=5
Folosind apeluri utile ale subprogramelor sub1 şi sub2 să se mute la începutul unui tablou v
numerele impare iar la sfârşit valorile pare.
Exemplu: pentru v=(11,24,3,4,51,6,8,33) o soluţie poate fi: v=(11,33,3,51,6,8,4,24)

24. Scrieţi definiţia completă a subprogramelor:


a. sterge, care primeşte prin cei 3 parametri v,n,p:
- v,un tablou unidimensional cu maximum 100 de elemente întregi din intervalul [-
1000;1000]
- n, un număr natural reprezentând numărul de elemente din tabloul v
- p o valoare naturală cu 1≤p≤n
şi elimină din tabloul v elementul de indice p actualizând valoarea parametrului n
b. numără, care primeşte prin cei 3 parametri v,n,x:
- v,un tablou unidimensional cu maximum 100 de elemente întregi din intervalul [-
1000;1000]
- n, un număr natural reprezentând numărul de elemente din tabloul v
- x o valoare întreagă din intervalul [-1000;1000]
şi returnează numărul de componente din v cu valoare egală cu x
c. Folosind apeluri utile ale subprogramelor sterge şi numără să se elimine valorile
duplicate dintr-un tablou v astfel încât fiecare valoare să apară în tablou o singură data
Exemplu: pentru v=(1, 2, 7, 2, 3, 7, 2) după apeluri va memora valorile 1, 2, 3, 7 nu
obligatoriu în această ordine.

25. Scrieţi definiţia completă a subprogramului prelucrare, care primeşte prin cei 6 parametri v,
w, p1, p2, q1, q2:
- v, w două tablouri unidimensionale cu maximum 100 de elemente întregi din intervalul [-
1000;1000] fiecare
- p1, p2, q1, q2 numere naturale din intervalul [1,100] şi returnează valoarea 1 dacă
valorile componentelor din v cu indici cuprinşi intre p1 şi p2 sunt egale cu valorile
componentelor din w cu indici cuprinşi intre q1 şi q2 altfel returnează valoarea 0.
Folosind apeluri utile ale subprogramului prelucrare să se determine dacă există o secvenţă
de valori consecutive dintr-un tablou unidimensional a cu m componente (m≤100) egale cu
elementele unui tablou unidimensional b cu n componente (n≤m). Se va afişa DA sau NU.
Exemplu: pentru a =(2, 4, 5, 1, 9, 7, 8, 2, 10) şi b=(5, 1, 9, 7) se afişează DA.

26. Scrieţi definiţia subprogramului sterge, care primeşte prin cei 3 parametri v, n, p:
- v, un tablou unidimensional cu maximum 100 de elemente întregi din intervalul [-
1000;1000]
- n, un număr natural reprezentând numărul de elemente din tabloul v
- p o valoare naturală cu 1≤p≤n şi elimină din tabloul v elementul de indice p actualizând
valoarea parametrului n
Fie un tablou a unidimensional care memorează maximum 100 de elemente întregi din
intervalul [-1000;1000] ordonate crescător. Scrieţi un program care utilizează apeluri utile ale
subprogramului sterge pentru a elimina din tablou un număr minim de elemente astfel încât
să nu existe două elemente alăturate cu aceeaşi valoare. Elementele tabloului obţinut se
afişează pe ecran, separate prin câte un spaţiu.
Exemplu: pentru v=(1, 2, 2, 2, 7, 7, 8, 9, 9, 9) se va afişa: 1, 2, 7, 8, 9

27. Să se definească:
a. un subprogram calcule care primeşte prin parametrul a un număr natural cu cel mult
nouă cifre şi care returnează prin parametrii x şi z cea mai mare respectiv cea mai mică
dintre cifrele numărului a.
b. un subprogram modific care primeşte prin parametrul a un număr natural cu cel mult
nouă cifre şi două cifre c1 şi respectiv c2. Subprogramul înlocuieşte cifra c1 cu cifra c2
şi returnează rezultatul prin parametrul a.
Fie un tablou v care poate memora până la 100 de numere naturale cu cel mult 9 cifre
fiecare. Folosind apeluri utile ale subprogramelor calcule şi modific să se genereze tabloul
w care se obţine din componentele tabloului v pentru care pentru fiecare componentă s-au
înlocuit cifrele cu cea mai mică valoare cu cifra cu cea mai mare valoare.
Exemplu: pentru n=5 si valorile: v =(16767, 5632273, 45755, 3313, 774) se obţine
w=(76767, 5637773, 75755, 3333, 777)
28. Să se definească:
 Un subprogram cmmdc cu parametrii x şi y numere naturale nenule de cel mult 4 cifre
fiecare. Subprogramul returnează cel mai mare divizor comun al valorilor x şi y
 Un subprogram cmmmc cu parametrii x si y numere naturale nenule de cel mult 4 cifre
fiecare. Subprogramul returnează cel mai mic multiplu comun al valorilor x şi y
Fie un tablou unidimensional v care memorează cel mult 100 de numere naturale de cel
mult 4 cifre fiecare. Folosind apeluri utile ale subprogramelor cmmdc şi cmmmc să se
determine:
a. Cel mai mare divizor comun al componentelor tabloului v
b. Cel mai mic multiplu comun al componentelor tabloului v
c. Să se afişeze perechile de numere prime între ele din tabloul v

29. Se consideră un tablou unidimensional v cu n (n≤50) componente de tip întreg Pentru k


număr natural citit de la tastatură (k≤n) să se ordoneze crescător primele k componente şi
descrescător celelalte componente ale lui v. Se vor defini: un subprogram pentru citirea lui v
şi un subprogram ce ordonează crescător componentele unui tablou unidimensional
delimitate de doi indici p şi q.

30. Se consideră un tablou unidimensional v cu n (n≤50) componente de tip întreg. Sa se


determine componentele tabloului cu cei mai mulţi divizori. Se vor defini: un subprogram
pentru citirea tabloului şi unul pentru calculul numărului de divizori ai unui număr întreg
x.

9.3 Prelucrarea tablourilor bidimensionale

31. Să se definească un subprogram ordonare care primeşte ca parametri un tablou


bidimensional a cu 20 de linii şi 30 de coloane care memorează numere întregi, un număr n
reprezentând numărul de coloane şi un număr natural L (L≤20). Subprogramul ordonează
crescător elementele de pe linia L. Folosind apeluri utile ale subprogramului ordonare să se
ordoneze elementele de pe fiecare linie a unui tablou bidimensional cu m (m≤20) linii şi n
(n≤30) coloane. Să se afişeze tabloul astfel modificat.

32. Să se definească un subprogram calcul care primeşte ca parametri un tablou bidimensional a


cu 20 de linii şi 30 de coloane care memorează numere întregi, un număr n reprezentând
numărul de coloane şi un număr natural L (L≤20). Subprogramul returnează valoarea
maximă a elementele de pe linia L. Folosind apeluri utile ale subprogramului calcul să se
afişeze valoarea maximă de pe fiecare linie a unui tablou bidimensional cu m (m≤20) linii şi
n (n≤30) coloane. Să se afişeze cea mai mică dintre valorile afişate anterior.

33. Să se definească un subprogram calcul care primeşte ca parametri un tablou bidimensional a


cu 20 de linii şi 30 de coloane care memorează numere întregi, un număr n reprezentând
numărul de coloane şi un număr natural L (L≤20). Subprogramul returnează suma
elementele de pe linia L. Folosind apeluri utile ale subprogramului calcul să se afişeze suma
elementelor de pe fiecare linie a unui tablou bidimensional cu m (m≤20) linii şi n (n≤30)
coloane. Să se afişeze indicii liniilor cu suma maximă.
34. Să se definească un subprogram ştergeL care primeşte ca parametri un tablou bidimensional
a cu 20 de linii şi 30 de coloane care memorează numere întregi, două numere m şi n
reprezentând numărul de linii, respectiv coloane şi un număr natural L (L≤20).
Subprogramul şterge elementele de pe linia L actualizând numărul de linii. Folosind apeluri
utile ale subprogramului ştergeL să se şteargă elementele de pe liniile impare ale unui tablou
bidimensional cu m (m≤20) linii şi n (n≤30) coloane.

35. Să se definească un subprogram calcul care primeşte ca parametri un tablou bidimensional a


cu 50 de linii şi 50 de coloane care memorează numere întregi, un număr m reprezentând
numărul de linii, un număr întreg x şi un număr natural C (C≤20). Subprogramul returnează
numărul de valori de pe coloana C din tabloul a egale cu valoarea x. Folosind apeluri utile ale
subprogramului calcul să se afişeze indicii coloanelor cu produsul maxim ale unui tablou
bidimensional cu m (m≤50) linii şi n (n≤50) coloane care memorează numai valori egale cu
1 sau 2.

36. Să se definească un subprogram sub care primeşte ca parametri: un tablou bidimensional a


care memorează 20 de linii şi 20 de coloane de cel mult patru cifre fiecare, două numere
naturale nenule m (m≤20) şi n (n≤20) reprezentând numărul efectiv de linii, respectiv de
coloane ale tabloului a şi un număr întreg x de cel mult patru cifre. Subprogramul returnează
numărul de componente din a egale cu x. Folosind apeluri utile ale subprogramului sub să se
determine dacă două tablouri bidimensionale a şi b cu m linii şi n coloane care prelucrează
numere întregi de cel mult patru cifre fiecare memorează aceleaşi valori.
Exemplu:
 3 4 5  3 3 3
   
Pentru: a   5 4 3  şi b   4 4 5  se afişează DA
 1 2 3  5 2 1
   

37. Să se definească un subprogram schimb care primeşte ca parametri: un tablou bidimensional


a cu 20 de linii şi 20 de coloane care memorează numere întregi de cel mult patru cifre, trei
numere naturale nenule m (m≤20) şi c1(c1≤20) şi c2(c2≤20) reprezentând numărul efectiv
de linii, respectiv numerele de ordine a două coloane ale tabloului a. Subprogramul
interschimbă valorile componentelor de pe coloana c1 cu valorile de pe coloana c2. Folosind
apeluri utile ale subprogramului schimb să se ordoneze crescător elementele de pe linia x a
unui tablou bidimensional a cu m linii şi n coloane care prelucrează numere întregi de cel
mult patru cifre fiecare, interschimbând valorile coloanelor ca în exemplu.
Exemplu:

3 8 9 2
 
2 1 5 4
Pentru: a   şi x=2, după ordonarea valorilor de pe linia 2 se obţine:
1 8 9 2
 
4 2 
 8 9
8 3 2 9
 
1 2 4 5
a
8 1 2 9
 
8 9 
 4 2
38. Să se definească un subprogram patrat care primeşte ca parametri: o matrice pătratică a cu
20 de linii şi 20 de coloane care memorează numere întregi de cel mult patru cifre, şi un
număr natural c(c≤20) reprezentând numărul de ordine al unui pătrat concentric al tabloului.
Spre exemplu daca c=1 atunci pătratul concentric memorează elementele de pe prima şi
ultima linie, respectiv de pe prima şi ultima coloană. Pentru c=2 se prelucrează elementele de
pe cea de a doua linie, a doua coloana, penultima linie, respectiv penultima coloană, ş.a.m.d.
Subprogramul returnează suma valorilor componentelor de pe coloana pătratul concentric c.
Folosind apeluri utile ale subprogramului patrat să se afişeze valorile componentelor
pătratului concentric cu cea mai mare sumă dintr-o matrice pătratică a cu n linii şi n coloane
care prelucrează numere întregi de cel mult patru cifre fiecare. În cazul în care sunt mai
multe astfel de pătrate se va afişa cel cu numărul de ordine cel mai mic. Elementele pătratului
concentric se vor afişa în sensul arcelor de ceasornic începând cu elementul din stânga sus.
Exemplu:

1 2 1 2
 
5 9 8 1
Pentru: a= 
3 34 9 1
 
3 3 2 1 

Se va afişa: 9, 8, 9, 34 (elementele celui de al doilea pătrat concentric)

39. Fie un tablou bidimensional a cu m linii şi n coloane (1≤m, n≤20) având componente binare.
Fiecare linie constituie reprezentarea unui număr natural în baza 2. Se cere să se afişeze
aceste numere, numărul cel mai mare şi indicele liniei (liniilor) care determină numărul cu
cea mai mare valoare. Se va defini un subprogram care primeşte ca parametri: un tablou
bidimensional a ca cel descris anterior, numărul de coloane n, indicele unei linii L şi care
întoarce numărul zecimal asociat.
Exemplu:

0 1 0 1
 
1 0 1 1
Pentru: a=  se va afişa:
0 0 1 1
 
0 1 0 0
 
5 11 3 4 - cele patru numere
11 - cea mai mare valoare
2 - linia care determină cea mai mare valoare

40. Scrieţi definiţia unui subprogram schimbC care primeşte ca parametri:


- un tablou bidimensional a cu m linii şi n coloane (1≤m, n≤20) având componente numere
întregi
- numărul m reprezentând numărul efectiv de linii al tabloului a
- două numere naturale nenule c1 şi c2 reprezentând indicii a două coloane.
Subprogramul interschimbă elementele de pe coloana c1 cu elementele de pe coloana c2.
Folosind apeluri utile ale subprogramului schimbC să se transfere la sfârşitul tabloului
primele p coloane.
Exemplu:

1 2 3 4 5  3 4 5 1 2
   
pentru a= 1 2 3 4 5  şi p=2 se obţine a=  3 4 5 1 2 
1 2 3 4 5  3 4 5 1 2
   

41. Să se definească:
a. un subprogram calcul1 care primeşte ca parametri un tablou bidimensional a cu 20 de
linii şi 30 de coloane care memorează numere întregi, un număr n reprezentând
numărul efectiv de coloane şi un număr natural L (L≤20). Subprogramul returnează
suma elementele de pe linia L.
b. un subprogram calcul2 care primeşte ca parametri un tablou bidimensional a cu 20 de
linii şi 30 de coloane care memorează numere întregi, un număr m reprezentând
numărul efectiv de linii şi un număr natural C (C≤30). Subprogramul returnează suma
elementele de pe coloana C.
Folosind apeluri utile ale subprogramelor calcul1 şi calcul2 să se bordeze matricea cu
linia m+1 şi coloana n+1 unde a[m+1,j] reprezintă suma elementelor de pe coloana j iar
a[i,n+1] suma elementelor de pe linia i a unui tablou bidimensional cu m (m≤20) linii şi n
(n≤30) coloane.

Exemplu:

 1 5 7 13 
1 5 7  
pentru a=   se obţine a=  2 9 6 17 
 2 9 6  3 14 13 30 
 

42. Să se definească un subprogram calcul care primeşte ca parametri un tablou bidimensional a


cu 20 de linii şi 20 de coloane care memorează numere întregi, un număr n reprezentând
numărul efectiv de coloane, un număr natural L (L≤20) şi un număr întreg x. Subprogramul
returnează numărul de valori egale cu x de pe linia L. Folosind apeluri ale subprogramului
calcul să se afişeze liniile cu un număr maxim de valori nenule pentru un tablou a cu m linii
şi n coloane (m,n≤20).
Exemplu:

1 0 3 4 5
 
0 2 0 0 0
pentru a=  se va afişa 1, 3.
3 7 0 1 2
 
0 0 
 0 0 1

43. Să se definească un subprogram calcul care primeşte ca parametri un tablou bidimensional a


cu 20 de linii şi 20 de coloane care memorează numere întregi, un număr n reprezentând
numărul efectiv de coloane, un număr natural L (L≤20) şi un număr întreg x. Subprogramul
returnează numărul de valori egale cu x de pe linia L. Folosind apeluri ale subprogramului
calcul să se afişeze liniile cu un număr maxim de valori distincte (valori care apar o singură
dată) pentru un tablou a cu m linii şi n coloane (m,n≤20).
Exemplu:

4 5 5 6 7
 
1 2 2 2 2
pentru a=  se va afişa 1, 3.
3 2 6 6 1
 
4 1 
 1 1 1

44. Fie un tablou bidimensional a cu 20 de linii şi 30 de coloane care memorează numai valori
binare (0 şi 1). Două linii se numesc complementare daca suma valorilor de pe aceeaşi
coloana este egală cu 1. Să se definească un subprogram complement care primeşte ca
parametri un tablou bidimensional a cu 20 de linii şi 30 de coloane care memorează valori
binare, un număr n reprezentând numărul efectiv de coloane şi două numere naturale L1 şi
L2 (L1,L2≤20). Subprogramul returnează 1 dacă liniile L1 şi L2 sunt complementare.
Folosind apeluri utile ale subprogramului complement să se afişeze perechile de linii
complementare ale unui tablou a cu m linii şi n coloane. În cazul în care nu există linii
complementare se va afişa un mesaj.
Exemplu:
1 0 0 1
 
1 1 0 0
pentru a=  0 1 1 0  se va afişa: (1,3), (1,5), (2,4)
 
0 0 1 1
0 1 1 0
 

45. Scrieţi definiţia completă a unui subprogram sub, subprogram care:


- primeşte prin intermediul parametrului a un tablou bidimensional cu 20 de linii şi 20 de
coloane, care memorează numere întregi de cel mult 4 cifre.
- două numere naturale m, n (m,n≤20) reprezentând numărul efectiv de linii, respectiv
coloane
- două numere L, C (L,C≤20)reprezentând indicii unei linii respectiv unei coloane.
- returnează 1 dacă toate valorile memorate de L şi C sunt egale, altfel întoarce valoarea 0.
Scrieţi un program care citeşte un tablou bidimensional a cu m linii şi n coloane şi
determină toate perechile (i,j) cu proprietatea că a[i,j] se găseşte la intersecţia unei linii cu o
coloană având toate valorile egale.
Exemplu:
 1 2 3 4
 
 2 2 2 2
pentru a=  se afişează: (2,2), (4,2)
5 2 6 7
 
 2 2 2 2
 
46. Fie un tablou bidimensional cu m linii şi n coloane (m,n≤50) care memorează numere întregi.
Să se afişeze coloanele care reprezintă şiruri ordonate crescător şi liniile care reprezintă şiruri
ordonate descrescător. Se vor defini două subprograme:
a. sub1 care returnează valoarea 1 dacă o coloană C este ordonată crescător (altfel
returnează valoarea 0)
b. sub2 care returnează valoarea 1 dacă o coloană L este ordonată descrescător (altfel
returnează valoarea 0).

47. Fie un tablou bidimensional cu m linii şi n coloane (m,n≤50) care memorează numere întregi.
Să se determine dacă tabloul are puncte şa. Un punct se numeşte şa dacă este minim pe linia
pe care se situează şi maxim pe coloana pe coloana pe care se situează.
Exemplu: pentru m=3, n=4 şi tabloul:
5612
8879
4532
se afişează valoarea 7.

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