16
PROBLEME – SUBPROGRAME

PROBLEME – SUBPROGRAME · toate numerele prime care se află pe a doua linie a fişierului . date.in, în ordinea crescătoare a valorilor lor, separate prin câte un spaţiu. Dacă

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

PROBLEME – SUBPROGRAME

Subiectul nr. 1 Fişierul număr.in conţine pe prima linie un număr natural n, format din cel mult 8 cifre, cel puţin o cifră fiind impară.

Se consideră subprogramele:

• S1 cu doi parametri, care primeşte prin intermediul parametrilor a şi b două numere naturale formatefiecare din cel mult 8 cifre; subprogramul determină eliminarea cifrei unităţilor numărului conţinut deparametrul a, mutând-o la sfârşitul numărului conţinut de parametrul b, returnând prin intermediulparametrilor a şi b noile numere obţinute. De exemplu, pentru valorile 21134 şi 61 ale parametrilor a şi b,în urma executării subprogramului S1 valorile returnate prin intermediul parametrilor vor fi 2113 şi 614.

• S2 cu un singur parametru k prin intermediul căruia primeşte un număr natural, k>1; subprogramulreturnează numărul natural obţinut prin eliminarea fiecărei cifre pare din numărul k. De exemplu, pentruk=12345, subprogramul S2 va returna 135, iar pentru k=177 subprogramul S2 va returna 177.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;

b) Scrieţi definiţia completă a subprogramului S2;

c) Să se scrie un program C++ care să citească din fişierul număr.in numărul n, iar apoi, folosind apeluriutile ale subprogramelor S1 şi S2, să afişeze pe ecran răsturnatul numărului obţinut prin eliminarea tuturor cifrelor pare din numărul n.

Exemplu. Dacă fişierul număr.in are conţinutul alăturat, programul va afişa pe ecran numărul următor: 73913

83109327

Subiectul nr. 2 Fişierul date.in conţine două linii. Pe prima linie a fişierului este scris un număr natural n (1≤n≤100), iar pe a doua linie sunt scrise n numere naturale, formate fiecare din cel mult 4 cifre, separate prin câte un spaţiu.

Se consideră subprogramele:

• S1 cu un singur parametru k prin intermediul căruia primeşte un număr natural nenul, 1<k<10000;subprogramul returnează numărul divizorilor proprii ai numărului k;

• S2 cu doi parametri, care primeşte prin intermediul parametrilor:- p şi q , două numere naturale (1≤p<q≤100); - v,un tablou unidimensional format din cel mult 100 componente componente, cu indicii de la 1, ce

memorează numere naturale, cu cel mult 4 cifre fiecare. Subprogramul determină ordonarea descrescătoare doar a secvenţei din vector formată din valorile componentelor v[p], v[p+1], v[p+2],…,v[q], restul componentelor tabloului nemodificându-se.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi definiţia completă a subprogramului S2;c) Să se scrie un program C++ care să citească din fişierul date.in numărul n şi cele n numere naturale, iar

apoi, folosind apeluri utile ale subprogramelor S1 şi S2, să determine şi să afişeze pe prima linie a ecranului toate numerele prime care se află pe a doua linie a fişierului date.in, în ordinea crescătoare a valorilor lor, separate prin câte un spaţiu. Dacă nu există astfel de numere se va afişa mesajul NU.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va afişa pe ecran numerele următoare:

3 3 17 101

8

12 101 9 3 28 3 17 24

Subiectul nr. 3 In fişierul date.in se găsesc pe o singură linie, separate prin câte un spaţiu, mai multe numere naturale din intervalul închis [10, 1000000].

Se consideră subprogramele:

• S1 cu un singur parametru k prin intermediul căruia primeşte un număr natural nenul cu cel mult 6 cifre, k>9;subprogramul returnează numărul format prin eliminarea primei şi ultimei cifre a valorii parametrului k;Exemplu. Pentru k=12345 subprogramul returnează valoarea 234.

• S2 cu un singur parametru k prin intermediul căruia primeşte un număr natural nenul cu cel mult 6 cifre, k>9;subprogramul returnează cel mai mic număr prim mai mare sau egal cu k.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi definiţia completă a subprogramului S2;c) Să se scrie un program C++ care să determine pentru fiecare număr x, citit din fişierul date.in, cel mai

mic număr prim mai mare sau egal cu numărul format prin eliminarea primei şi ultimei cifre a lui x, în această ordine, folosind apeluri utile ale subprogramelor S1 şi S2. Numerele prime determinate se vor afişa pe ecran, pe o singură linie, separate câte un spatiu.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va afişa numerele următoare:

47 239 239 233

3456 12345 22347 12321

Subiectul nr. 4 Fişierul date.in conţine un text format din cel mult 250 de caractere, scris pe o singură linie. Cuvintele din text sunt separate prin câte un spaţiu, iar fiecare cuvânt este format din cel mult 20 caractere, doar literele mici ale alfabetului englez. Se consideră subprogramul:

• S1 care primeste prin intermediul singurului său parametru s un cuvânt şi returnează numărul de vocale(a,e,i,o,u) conţinute de cuvântul s;

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi un program C++, care folosind apeluri utile ale subprogramului S1, citeşte textul din fişierul

date.in şi îl modifică oglindind fiecare cuvânt din text care conţine cel puţin două vocale. Programul scrie noul text în fişierul date.out pe o singură linie.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va scrie în fişierul date.out următoarele:

ina era un noierc si un pix

ani are un creion si un pix

Subiectul nr. 5 Fişierul date.in conţine o singură linie pe care este scris un text de cel mult 250 de caractere, format din cifre, spaţii, litere mici sau mari ale alfabetului englez.

Se consideră subprogramele:

• S1 cu un singur parametru, care determină, în urma apelului, citirea textului din fişierul date.in şireturnează prin intermediul parametrului s textul citit;

• S2 cu doi parametri, care primeşte prin intermediul parametrilor:- c un caracter literă mică; - s un şir de caractere format din cel mult 250 de caractere. Subprogramul returnează numărul de apariţii ale caracterului c în şirul s.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi definiţia completă a subprogramului S2;c) Scrieţi un program C++, care, folosind apeluri utile ale subprogramelor S1 şi S2, citeşte textul din fişierul

date.in şi afişează pe ecran, pe o singură linie, separate prin câte un spaţiu, în ordine alfabetică, toate literele mici distincte ale alfabetului englez care apar de mai multe ori în textul citit. Dacă textul nu conţine nicio literă mică, atunci programul va afişa mesajul NU.

Exemplu. Dacă fişierul date.in are conţinutul următor

Examen de ATESTARE la informatica

programul va afişa pe ecran literele următoare:

a e i m n

Subiectul nr. 6

Fişierul date.in conţine un text format din cel mult 250 de caractere, scris pe o singură linie. Cuvintele din text sunt separate prin câte un spaţiu, iar fiecare cuvânt este format din cel mult 20 caractere, doar literele mici ale alfabetului englez.

Se consideră subprogramele:

• S1 care primeşte prin intermediul singurului său parametru s un cuvânt şi returnează cuvântul obţinut prinînlocuirea primei litere din cuvântul primit cu litera mare corespunzătoare;

• S2 care primeste prin intermediul singurului său parametru s un cuvânt din text şi furnizează prin intermediulparametrului s cuvântul obţinut prin oglindirea acestuia. De exemplu, pentru cuvântul abcd primit prinintermediul parametrului s, subprogramul returnează cuvântul: dcba.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi definiţia completă a subprogramului S2;c) Scrieţi un program C++, care folosind apeluri utile ale subprogramelor S1 şi S2, citeşte textul din fişierul

date.in şi îl transformă înlocuind prima şi ultima literă fiecărui cuvânt din text cu litera mare corespunzătoare, restul caracterelor rămânând nemodificate. Programul scrie noul text în fişierul date.out pe o singură linie.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va scrie în fişierul date.out următoarele:

AnI ArE UN CreioN SI O GumA

ani are un creion si o guma

Subiectul nr. 7 Pe prima linie a fişierului Matrice.in este scris un număr natural n (2<n≤30) iar pe fiecare din următoarele n linii ale fişierului, sunt scrise câte n numere naturale, formate fiecare din cel mult două cifre, separate prin câte un spaţiu, reprezentând valorile elementelor unei matrice pătratice A cu n linii.

Se consideră subprogramele:

• S1 cu doi parametri n şi a, care determină, în urma apelului, citirea numerelor din fişierul Matrice.in şi returnarea prin intermediul parametrului n a numărului de linii ale matricei din fişier, iar prin intermediul parametrului a returnarea unui tablou bidimensional pătratic cu n linii care memorează valorile elementelor matricei A din fişierul de intrare;

• S2 cu doi parametri v şi k, care primeşte prin intermediul parametrilor: - v un tablou unidimensional cu cel mult 30 de elemente (valorile memorate de elementele tabloului

fiind numere naturale, formate fiecare din cel mult două cifre); - k un număr natural (2<k≤30) reprezentând numărul efectiv de elemente ale tabloului v. Subprogramul returnează suma tuturor valorilor elementelor tabloului v.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1; b) Scrieţi definiţia completă a subprogramului S2; c) Scrieţi un program C++, care citeşte de la tastatură un număr natural m (2<m≤100), şi care, folosind

apeluri utile ale subprogramelor S1 şi S2, verifică dacă matricea A, scrisă în fişierul Matrice.in, poate fi matricea de adiacenţă a unui graf orientat cu n vârfuri (etichetate cu 1,2,...,n) şi m arce, fără bucle, caz în care programul va afişa pe ecran, pe o singură linie, separate prin câte un spaţiu, gradele interioare ale tuturor vârfurilor grafului, în ordinea crescătoare a etichetelor lor. Dacă matricea A nu poate fi matricea de adiacenţă a unui graf orientat cu n vârfuri şi m arce, atunci programul va afişa pe ecran mesajul IMPOSIBIL.

Exemplu. Dacă m=4 iar fişierul Matrice.in are conţinutul alăturat, atunci programul va afişa pe ecran următoare valori:

2 1 1

3

0 1 0

1 0 1

1 0 0

Subiectul nr. 8 Fişierul date.in conţine cel mult 1000 de numere naturale, fiecare număr fiind format din cel mult patru cifre, numerele fiind scrise pe o singură linie, separate prin câte un spaţiu.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1 care primeşte, prin intermediul parametrului x, un număr natural nenul, format din cel mult patru cifre, şi care returnează numărul de divizori pozitivi ai lui x.

b) Scrieţi definiţia completă a subprogramului S1 cu doi parametri, care primeşte prin intermediul parametrilor:

- n un număr natural, 0<n≤1000; - v un şir de n numere naturale, fiecare număr având cel mult patru cifre.

Subprogramul determină ordonarea crescătoare a numerelor din şir şi returnează prin intermediul parametrului v şirul ordonat.

c) Scrieţi un program C++, care citeşte din fişierul date.in toate numerele şi, folosind apeluri utile alesubprogramelor S1 şi S2, scrie în fişierul date.out, pe o singură linie, separate printr-un spaţiu, două numere naturale reprezentând cel mai mic număr, respectiv cel mai mare număr, cu exact patru divizori pozitivi din fişierul date.in. Dacă niciun număr din fişierul date.in nu are exact patru divizori, atunci pe prima linie a fişierului date.out se va scrie mesajul NU EXISTA.

Subiectul nr. 9

Fişierul date.in conţine pe prima linie un număr natural nenul n, 1≤n≤100, iar pe cea de-a doua linie n numere naturale de cel mult 9 cifre fiecare, separate prin câte un spaţiu.

Se consideră subprogramele:

• S1, care primeşte prin intermediul parametrului x, un număr natural de cel mult 9 cifre şi returnează prima(cea mai semnificativă) cifră a sa;

• S2, care primeşte prin intermediul parametrilor:- a, un tablou unidimensional cu cel mult 100 de componente care memorează fiecare câte un număr

natural de cel mult 9 cifre; - n, numărul efectiv de componente ale tabloului a, n<101.Subprogramul S2 ordonează descrescător elementele vectorului a.

Cerinţe: a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi definiţia completă a subprogramului S2;c) Scrieţi un program principal C++ care, folosind apeluri utile ale subprogramelor S1 şi S2, să citească

datele din fişierul date.in şi care să scrie în fişierul date.out pe linii separate numerele aflate pe cea de-a doua linie a fişierului date.in care au prima cifră egală cu ultima, în ordine descrescătoare. În cazul în care nu există astfel de numere, programul va scrie în fişierul date.out mesajul nu exista pe prima linie a acestuia.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va scrie în fişierul date.out următoarele:

123456781 5415 88 7

6 18 5415 7 88 100 123456781

Subiectul nr. 10

Un număr natural nenul x se numește pătrat perfect dacă există un alt număr natural nenul y, cu proprietatea că y*y = x. Fişierul date.in conţine pe prima linie un număr natural nenul n, 1≤n≤100, iar pe cea de-a doua linie n numere naturale de cel mult 9 cifre fiecare, separate prin câte un spațiu.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, atunci fişierul date.out va avea următorul conţinut:

10 1202

123 10 35 899 1202 145 5000

Se consideră subprogramele:

• S1, care primeşte prin intermediul parametrului x, un număr natural de cel mult 9 cifre și returnează celmai mare număr natural nenul al cărui pătrat este mai mic sau egal cu x

• S2, care primeşte prin intermediul parametrilor:− a, un tablou unidimensional cu cel mult 100 de componente care memorează fiecare câte un

număr natural de cel mult 9 cifre; − n, numărul efectiv de componente ale tabloului a, n<101.

Subprogramul S2 afișează pe ecran, pe linii separate, valorile memorate de componentele vectorului a, în ordine inversă față de cea a pozițiilor acestora în tablou.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1.

b) Scrieţi definiţia completă a subprogramului S2.

c) Scrieţi un program principal C++ care, folosind apeluri utile ale subprogramelor S1 şi S2, să citeascădatele din fişierul date.in şi care să scrie pe ecran, pe linii separate, numerele aflate pe cea de-a doua linie a fișierului date.in care sunt pătrate perfecte, în ordine inversă față de cea în care au fost citite. În cazul în care nu există astfel de numere, programul va scrie pe ecran mesajul nu exista.

Subiectul nr. 11

Fişierul date.in conţine pe prima linie un număr natural nenul n, 1≤n≤100, iar pe cea de-a doua linie n numere naturale de cel mult 9 cifre fiecare, separate prin câte un spațiu.

Se consideră subprogramele: • S1, care primeşte prin intermediul parametrului x, un număr natural de cel mult 9 cifre și returnează

numărul de divizori primi ai lui x.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1.

b) Scrieţi definiţia completă a subprogramului S2.

c) Scrieţi un program principal C++ care, folosind apeluri utile ale subprogramului S1 , să citeascădatele din fişierul date.in şi care să scrie pe ecran, pe linii separate, numerele aflate pe cea de-a doua linie a fișierului date.in care au număr maxim de divizori primi în ordinea în care au fost citite.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va scrie pe ecran următoarele:

16 121 4 289

6 289 541 27 4 121 16

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va scrie pe ecran următoarele:

12 10

6 12 9 5 27 4 10

Subiectul nr. 12

Fişierul date.in conţine pe prima linie două numere naturale nenule m (1≤m≤100) și n, (1≤n≤100), iar pe următoarele m linii câte n numere întregi, cu cel mult patru cifre fiecare, separate prin câte un spațiu, reprezentând elementele unei matrice cu m linii și n coloane.

Se consideră subprogramele:

• S1, cu parametrii:- a, un tablou bidimensional cu cel mult 100 de linii și cel mult 100 de coloane de tip integer/int;- m, numărul efectiv de linii ale matricei a;- n, numărul efectiv de coloane ale matricei a.Subprogramul S1 citește din fișierul date.in și furnizează prin intermediul parametrilor săi numărul de liniiși respectiv coloane, precum și elementele unei matrice.

• S2, care primeşte prin intermediul parametrilor:- a, un tablou bidimensional cu cel mult 100 de linii și cel mult 100 de coloane- m, numărul efectiv de linii ale matricei a- c, indicele unei coloane a matricei a.Subprogramul S2 returnează numărul de elemente pare ale coloanei c a matricei a.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1.

b) Scrieţi definiţia completă a subprogramului S2.

c) Scrieţi un program C++ care, folosind apeluri utile ale subprogramelor S1 şi S2, să citească datele dinfişierul date.in şi care să scrie pe ecran, cel mai mare indice al unei coloane cu număr minim de elemente pare. Liniile și coloanele matricei vor fi numerotate începând cu 1.

Subiectul nr. 13

Fişierul date.in conţine pe prima linie două numere naturale nenule m (1≤m≤100) și n, (1≤n≤100), iar pe următoarele m linii câte n numere întregi, cu cel mult 4 cifre fiecare, separate prin câte un spațiu, reprezentând elementele unei matrice cu m linii și n coloane.

Se consideră subprogramele: • S1, cu parametrii:

- a, un tablou bidimensional cu cel mult 100 de linii și cel mult 100 de coloane, de tip integer/int; - m, numărul efectiv de linii ale matricei a, 1≤m≤100; - n, numărul efectiv de coloane ale matricei a, 1≤n≤100. Subprogramul S1 citește numerele din fișierul date.in și furnizează prin intermediul parametrilor săi numărul de linii și respectiv coloane, precum și elementele unei matrice.

• S2, care primeşte prin intermediul parametrilor:- a, un tablou bidimensional cu cel mult 100 de linii și cel mult 100 de coloane de tip integer/int; - m, numărul efectiv de linii ale matricei a, 1≤m≤100; - c, indicele unei coloane a matricei a, 1≤c≤100.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va scrie pe ecran:

2

2 3 12 9 8

27 4 100

Subprogramul S2 returnează ultima cifră a produsului elementelor coloanei c din matricea a.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1.

b) Scrieţi definiţia completă a subprogramului S2.

c) Scrieţi un program principal C++ care, folosind apeluri utile ale subprogramelor S1 şi S2, să citeascădatele din fişierul date.in şi care să scrie pe ecran, cel mai mic indice al unei coloane cu ultima cifră a produsului elementelor maximă. Liniile și coloanele matricei vor fi numerotate începând cu 1.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va scrie pe ecran:

3

2 4 12 95 8 158

27 4 101 3181

Subiectul nr. 14

Fişierul date.in conţine două linii. Pe prima linie a fişierului este scris un număr natural n (1≤n≤10), iar pe a doua linie sunt scrise n numere naturale, formate fiecare din cel mult 4 cifre, separate prin câte un spaţiu.

Se consideră subprogramele:

• S1 care primeşte prin intermediul singurului său parametru x un număr natural de maximum 4 cifre;subprogramul returnează TRUE/1 dacă cifrele numărului primit prin parametrul x sunt în ordine strictcrescătoare, altfel va returna FALSE/0;

• S2 care primeşte prin intermediul singurului său parametru x un număr natural cu cel mult 4 cifre;subprogramul returnează prima cifră a numărului primit prin parametrul x. De exemplu, pentru x=1234,subprogramul va returna cifra 1.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi definiţia completă a subprogramului S2;c) Să se scrie un program C++ care să citească din fişierul date.in de pe prima linie numărul n şi apoi de

pe a doua linie cele n numere naturale formate fiecare din cel mult 4 cifre. Folosind apeluri utile ale subprogramelor S1 şi S2, programul va determina şi va afişa pe ecran, numărul de valori din şir care au cifrele în ordine crescătoare iar prima cifră a lor este pară. Dacă nu există astfel de numere se va afişa mesajul NU.

Subiectul nr. 15 Fişierul date.in conţine un text format din cel mult 255 de caractere, scris pe o singură linie. Cuvintele din text sunt separate prin unul sau mai multe spaţii, iar fiecare cuvânt este format din cel puţin 3 şi cel mult 50 caractere, doar litere mici ale alfabetului englez.

Exemplu. Dacă fişierul date.in are conţinutul alăturat, programul va afişa pe ecran:

2 (28 şi 24)

8

13 101 19 11 28 3 17 24

Se consideră subprogramele:

• S1 care primeşte prin intermediul singurului său parametru s, un şir de caractere format din maximum 50de caractere doar litere mici, şi care modifică şirul s prin eliminarea primului caracter din şir;

• S2 care primeşte prin intermediul singurului său parametru s, un şir de caractere format din maximum 50de caractere şi, care, modifică şirul prin eliminarea ultimului caracter din acesta.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi definiţia completă a subprogramului S2;c) Scrieţi un program C++, care citeşte textul fişierul date.in şi apoi, folosind apeluri utile ale

subprogramelor S1 şi S2, modifică fiecare cuvânt care începe şi se termină cu o aceeaşi vocală prin eliminarea acestei vocale de la începutul şi sfârşitul cuvântului. Cuvintele astfel modificate se vor scrie în fişierul date.out câte unul pe linie, în ordinea apariţiei lor în text. Dacă textul nu conţine niciun cuvânt cu proprietatea cerută, atunci în fişier se va scrie pe prima linie mesajul NU EXISTĂ. Se consideră vocale literele: a, e, i,o, u.

Exemplu. Dacă fişierul date.in conţine textul următor:

ana atestat colac elevele fereastra

atunci fişierul date.out va avea conţinutul alăturat:

n

level

Subiectul nr. 16 Fişierul numere.in conţine pe prima linie un număr natural nenul n, n<100, iar pe linia a doua, despărţite prin câte un spatiu, n numere naturale având cel mult 9 cifre fiecare.

Se consideră subprogramele:

• S1, care prin intermediul parametrului p primeşte un număr natural cu cel mult 9 cifre şi returneazărăsturnatul (oglinditul) acestui număr.

Exemplu: pentru p=617032 subprogramul va returna valoarea 230716.

• S2, cu doi parametri, prin intermediul cărora primeşte:- un vector v, cu cel mult 100 de componente numere naturale având cel mult 9 cifre fiecare;

- un număr natural nenul n reprezentând numărul efectiv de componente ale vectorului v, n<101.

Subprogramul determină afişarea pe ecran, în linie, a valorilor memorate în vector, separate prin câte un spaţiu.

Cerinţe:

a) Scrieţi definiţia completă a subprogramului S1;b) Scrieţi definiţia completă a subprogramului S2;c) Scrieţi un program C++ care folosind apeluri utile ale subprogramelor S1 şi S2, citeşte din fişierul

numere.in cele n numere de pe linia a doua şi afişează pe ecran, în linie, în ordinea inversă citirii, răsturnatele numerelor din fişier, separate prin câte un spaţiu.

Exemplu. Dacă fişierul numere.in are conţinutul alăturat atunci pe ecran se va afişa:

5137 95 34 623 12

5

21 326 43 59 7315

17. Se dă un tablou unidimensional cu n(1<=n<=100) componente numere naturale.

a) Să se afișeze cifrele numărului celui mai mare care se poate obține din cifreleelementului minim și ale celui maxim din vector. b) Să se afișeze câte elemente din tablou sunt sunt pătrate perfecte.

Datele de intrare se vor citi din fișierul date.txt, astfel:

-pe prima linie se găsește n; -pe linia a doua se găsesc elementele tabloului. Datele de ieșire se vor scrie pe ecran, astfel: -pe prima linie, numărul obținut la punctul a); -pe linia a doua, un mesaj în care să fie inclus numărul cerut la punctul b). Exemplu: Fișierul date.txt:

6

271 109 28 713 14 36

Se afișează: 74311 Tabloul are 1 pătrat perfect.

18. Se consideră un șir de n numere întregi distincte (1<=n<=20) și două numere întregia și b.a) Să se afișeze pe ecran toate elementele șirului care nu sunt în intervalul închisce se poate forma cu numerele a și b.

b) Să se ordoneze crescător numai elementele situate între elementul minim șielementul maxim din șirul dat și să se afișeze pe ecran șirul obținut după ordonare.

Datele de intrare se vor citi din fișierul date.txt, astfel:

-pe prima linie se găsește n; -pe linia a doua se găsesc cele n elemente ale șirului; -pe linia a treia se găsesc valorile lui a, respectiv b. Exemplu: Fișierul date.txt: 7

3 1 8 7 2 4 -1 5 3

Se vor afișa pe ecran șirurile: 1 8 7 2 -1

3 1 8 2 4 7 -1

19. Fie un șir de n (0<n<1000) numere întregi.Se cere:a) Să se verifice dacă numerele din șirul dat pot forma o mulțime.b) Să se scrie în ordine crescătoare factorii primi din descompunerea

elementului maxim din șirul dat.Datele de intrare se vor citi din fișierul date.in, astfel: -pe prima linie se găsește n; -pe linia a doua se găsesc elementele șirului. Datele de ieșire se vor scrie pe ecran astfel: -pe primul rând un mesaj; -pe următorul rând factorii primi separați prin spații. Exemplu:

Fișierul de intrare date.in: 5

80 64 50 96 45

Se afișează pe ecran: Elementele din fișier pot forma o mulțime 2 3

20. Se citește de la tastatură un număr natural n (0<n<100). Se cere:

a) Să se verifice dacă n este număr perfect. Un număr este perfect dacă esteegal cu suma tuturor divizorilor lui, afară de numărul însuși.

b) În fișierul date.in se găsesc, pe o singură linie, numere strict pozitive separateprin câte un spațiu. Să se afișeze elementele autopomorfice ale șirului.Numim număr autopomorfic o valoare care este sufix al pătratului său.

Exemplu: n=6 se afișează mesajul NUMARUL ESTE PERFECT. Fișierul date.in:

16 6 832 25 11 514 Pe ecran se afișează elementele 6 și 25.

21. Se dă un tablou bidimensional cu n linii și m coloane, ce conține numere naturale

nenule distincte.a) Să se determine, dacă există, un număr superprim în matrice și să se afișeze

linia pe care se găsește acesta. Un număr este superprim, dacă atât el, cât șirăsturnatul lui, sunt numere prime. Dacă există mai multe astfel de numere, seva afișa unul singur, oricare dintre ele.

b) Să se determine și să se afișeze toate elementele vecine elementului maximdin matrice.

Datele de intrare se vor citi din fișierul date.in, astfel: -pe prima linie se g[sesc n și m; -pe urm[toarele n linii se găsesc câte m numere ce reprezintă elementele matricei. Datele de ieșire se vor scrie pe ecran, astfel: -pe prima linie, numărul superprim șI indicele de linie sau un mesaj corespunzător, în cazul în care nu există niciun număr superprim; -pe linia a doua, elementele cerute la punctul b), separate printr-un spațiu. Exemplu: Fișierul date.in: 4 3 33 65 105 44 32 22 62 76 41 31 1 12 Se afișează pe ecran: 31 4 65 32 22

22. Pe prima linie a fișierului date.in se găsesc numere naturale nenule.Se cere:

a) Pentru fiecare număr impar din fișier să se afișeze cel mai mare număr carese poate forma din cifrele lui.

b) Să se verifice dacă numerele din fișierul de intrare reprezintă o progresiearitmetică;în caz afirmativ să se afișeze primul element și rația, altfel să seafișeze un mesaj corespunzător.

Datele de ieșire se vor scrie pe ecran, astfel: -pe prima linie, elementele determinate la punctual a); -pe a doua linie, r[spunsul cerin’ei b). Exemplu: Fișierul date.in:

31 38 45 52 59 66 Se afișează pe ecran: 31 38 54 52 95 66 Primul termen este 31 și rația 7.

23. Fie un tablou bidimensional cu n linii și n coloane. Se cere:a) Să se afișeze transpusa matricei;b) Să se afișeze câte perechi de numere prime ele sunt pe diagonala secundară

a matricei inițiale.Datele de intrare se vor citi din fișierul date.in, astfel: -pe prima linie se găsește n; Pe următoarele n linii se găsesc câte n numere ce reprezintă elementele matricei. Exemplu: Fișierul de intrare: Se afișează: 4

5perechi

24. Fie un tablou bidimensional cu n linii și n coloane. Se cere:a) Să se elimine elementele de pe coloana x, cu x citit de la tastatură;b) Să se determine elementul maxim din matricea modificată și să se afișeze

câte cifre distincte are acesta. Datele de intrare se vor citi din fișierul date.in, astfel: -pe prima linie se găsesc n și m separate printr-un spațiu; -pe urm[toarele n linii se găsesc câte m numere ce reprezintă elementele matricei. Datele de ieșire se vor scrie pe ecran, astfel: -pe n linii, matricea transformată; -pe linia urm[toare, elementul maxim și numărul de cifre distincet ale lui. Exemplu: Fișierul date.in: 3 5

Dacă se citește de la tastatură x=2, atunci pe ecran se afișează:

b)282 2

25. În fișierul prenume.txt se găsesc, pe o singură linie, prenumele unor elevi separate

prin câte un spațiu.

Să se ordoneze alfabetic( fără să se facă distincție între litere mari și mici) și să se

afișeze șirul de nume astfel obținut;

Să se afișeze numărul de fete din fișier, știind că numai prenumele fetelor se termină

cu litera a.

Datele de ieșire se vor scrie pe ecran, astfel: -pe prima linie, prenumele ordonate; -pe a doua linie, numărul de fete. Exemplu: Fișierul prenume.txt:

IOANA Marius Ciprian maria Silvia Gabriel Vlad

Pe ecran se afișează: Ciprian Gabriel IOANA maria Marius Silvia Vlad 3

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

1 2 32 4 5

61 14 282 9 10

11 12 13 14 15

1 32 4 5

61 282 9 10

11 13 14 15

26. Subprogramul sub, cu trei parametri, primeşte prin intermediul parametrului:– v un tablou unidimensional cu cel mult 100 de componente ce memorează numere întregicu cel mult 4 cifre; – n un număr natural nenul mai mic sau egal cu 100 ce reprezintă numărul efectiv decomponente ale tabloului primit prin intermediul parametrului v; – a un număr întreg cu cel mult 4 cifre.Subprogramul sub returnează numărul componentelor tabloului primit prin intermediul parametrului v ale căror valori sunt strict mai mici decât valoarea parametrului a. Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=20 ale parametrilor, în urma apelului, subprogramului sub va returna valoarea 2. a) Scrieţi definiţia completă a subprogramului sub.b) Să se scrie un program C/C++ care să citească de la tastatură un număr natural nenul n(n≤100) şi n numere întregi, fiecare având cel mult 4 cifre, şi care, folosind apeluri utile ale subprogramului sub, să afişeze pe ecran mesajul DA dacă oricare două dintre cele n numere întregi citite sunt distincte două câte două, sau mesajul NU în caz contrar. Exemplu: pentru n=6 şi cele n numere citite de la tastatură: 47 183 69 8 134 -56 se va afişa pe ecran mesajul DA.

27. Subprogramul cif, cu doi parametri, primeşte prin intermediul parametrului a unnumă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=125854 şi b=5, subprogramul va returna valoarea 2. a) Scrieţi definiţia completă a subprogramului cif.b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n cu exact 8 cifreşi care determină şi afişează pe ecran, folosind apeluri utile ale subprogramului cif, cel mai mare număr palindrom ce poate fi obţinut prin rearanjarea tuturor cifrelor numărului n. Dacă nu se poate obţine un palindrom din toate cifrele numărului n, programul va afişa pe ecran numărul 0. Un număr natural este palindrom dacă este egal cu numărul obţinut prin scrierea cifrelor sale în ordine inversă. Exemplu: dacă n=21523531 atunci se va afişa pe ecran numărul 53211235, iar dacă n=12272351 atunci se va afişa pe ecran numărul 0.

28. Scrieţi definiţia completă a subprogramului sub cu un singur parametru n numărnatural nenul (1<n≤50); subprogramul citeşte n numere naturale de la tastatură cu maximum 4 cifre fiecare şi returnează suma numerelor citite care au proprietatea că sunt pătrate perfecte. Exemplu: dacă n=4 şi numerele citite sunt 4, 5, 9, 3 la apelul subprogramului se va returna valoarea 13.

29. a) Scrieţi doar antetul funcţiei sum care primeşte ca parametru un număr natural x cu maximum 9 cifre şi returnează suma divizorilor numărului x. Exemplu: sum(6) are valoarea 12 (=1+2+3+6). b) Să se scrie un program C/C++ care citeşte de la tastatură un număr natural nenul n şiapoi n numere naturale cu maximum 9 cifre fiecare. Programul calculează, folosind apeluri ale funcţiei sum, şi afişează pe ecran câte numere prime conţine şirul citit. Exemplu: pentru n=5 şi valorile 12 3 9 7 1 se va afişa pe ecran valoarea 2 (în şirul date există două numere prime şi anume 3 şi 7).

30. Scrieţi definiţia completă a subprogramului multiplu care are 3 parametri: a, prin careprimeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000, n, numărul de elemente ale tabloului şi k, un număr natural (k≤9). Subprogramul returnează numărul de elemente din tablou care sunt multipli ai numărului k şi au ultima cifră egală cu k. Exemplu: dacă n=6, a=(2,273,63,83,93,123), iar k=3, subprogramul va returna valoarea 4.

31. Scrieţi definiţia completă a subprogramului interval care are 2 parametri prin careprimeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000

şi numărul de elemente din tabloul unidimensional. Subprogramul returnează număru l de elemente din tabloul unidimensional care aparţin intervalului închis determinat de primul şi respectiv ultimul element al tabloului. Exemplu: dacă tabloul are 6 elemente şi este de forma (12,27,6,8,9,2), subprogramul va returna valoarea 5.

32. Scrieţi definiţia completă a subprogramului count care are 2 parametri prin careprimeşte un tablou unidimensional cu maximum 100 de numere reale şi numărul de

elemente din tablou. Subprogramul returnează numărul de elemente din tabloul unidimensional care sunt mai mari sau cel puţin egale cu media aritmetică a tuturor elementelor din tablou. Exemplu: dacă tabloul are 6 elemente şi este de forma (12, 7.5, 6.5, 3, 8.5, 7.5), subprogramul va returna valoarea 4.

33. Subprogramul aranjare are 2 parametri: a prin care primeşte un tablouunidimensional cu maximum 100 de numere reale şi n, numărul de elemente din tablou.

Subprogramul rearanjează elementele tabloului unidimensional astfel încât toate valorile negative să se afle pe primele poziţii, iar valorile pozitive în continuarea celor negative. Ordinea în cadrul secvenţei de elemente pozitive, respectiv în cadrul secvenţei de elemente negative, poate fi oricare. Tabloul modificat va fi furnizat tot prin intermediul parametrului a. Exemplu: dacă tabloul are 6 elemente şi este de forma (12, -7.5, 6.5, -3, -8, 7.5), după apel, acesta ar putea fi: (-7.5, -3, -8, 12, 6.5, 7.5). Scrieţi definiţia completă a subprogramului aranjare.

34. Scrieţi definiţia completă a unui subprogram i_prim care primeşte prin singurul săuparametru, n, un număr natural din intervalul [2,30000] şi returnează diferenţa minimă p2-p1 în care p1 şi p2 sunt numere prime şi p1<=n<=p2. Exemplu: dacă n=20 atunci i_prim(n)=4, valoare obţinută pentru p1=19 şi p2=23.

35. a) Scrieţi definiţia completă a subprogramului shift care primeşte prin intermediul parametrului n o valoare naturală nenulă (n≤100), iar prin intermediul parametrului x, cele n componente ale unui tablou unidimensional. Fiecare componentă a acestui tablou este un număr întreg care are cel mult 4 cifre. Subprogramul permută circular cu o poziţie spre stânga elementele tabloului x şi furnizează tabloul modificat tot prin parametrul x. Exemplu: dacă înainte de apel n=4 şi x=(1,2,3,4), după apel x=(2,3,4,1). b) Scrieţi un program C/C++ care citeşte de la tastatură o valoare naturală nenulă n(n<=100), apoi cele n elemente ale unui tablou unidimensional x. Programul va inversa ordinea elementelor tabloului x folosind apeluri utile ale subprogramului shift şi va afişa pe

ecran, separate prin câte un spaţiu, elementele tabloului rezultat în urma acestei prelucrări. Exemplu: dacă se citesc pentru n valoarea 5, iar tabloul x este (1,2,3,4,5) programul va determina ca x să devină (5,4,3,2,1).

36. a) Scrieţi definiţia completă a subprogramului p care primeşte prin intermediul parametrului n un număr natural nenul (n≤100), iar prin intermediul parametrului x un tablou unidimensional cu n componente întregi, de maximum patru cifre fiecare. Subprogramul furnizează prin intermediul parametrului mini valoarea minimă din tabloul x, prin intermediul parametrului maxi valoarea maximă din x, iar prin intermediul parametrului sum suma elementelor din tabloul x. b) Scrieţi un program C/C++ care citeşte de la tastatură o valoare naturală nenulă n,(3<=n<=100), apoi cele n elemente, distincte, ale unui tablou unidimensional x. Fiecare

dintre aceste elemente este un număr natural având cel mult patru cifre. Folosind apeluri utile ale subprogramului p, programul calculează şi afişează pe ecran media aritmetică a elementelor care ar rămâne în tabloul x dacă s-ar elimina valoarea minimă şi valoarea maximă din tablou. Valoarea afişată va avea cel mult 3 cifre după virgulă. Exemplu: dacă se citesc pentru n valoarea 5, iar pentru tabloul x valorile (1,9,4,8,5), programul va afişa una dintre valorile 5.667 sau 5.666.

37. Scrieţi definiţia completă a subprogramului sterge, care primeşte prin cei 4 parametriv, n, i, j:

- 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 - i şi j două valori naturale cu 1≤i≤j≤n şi elimină din tabloul v elementele vi,vi+1,…,vj actualizând valoarea parametrului n.Tabloul modificat este furnizat tot prin parametrul v. b) Fişierul text NUMERE.IN conţine pe prima linie un număr natural nenul n (1≤n≤100) şi peurmătoarea linie n numere întregi din intervalul [-1000;1000], separate prin câte un spaţiu. Scrieţi un program care citeşte din fişierul NUMERE.IN numărul natural n, construieşte în memorie un tablou unidimensional v cu cele n numere întregi aflate pe linia a doua în fişier şi 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: Dacă fişierul NUMERE.IN are conţinutul: 12 10 10 2 2 19 9 9 9 9 15 15 15 atunci se afişează 10 2 19 9 15.

38. Scrieţi definiţa completă a subprogramului nreal cu doi parametri x şi y, numerenaturale din intervalul [1;1000] ce returnează un număr real cu proprietatea că partea sa întreagă este egală cu x, iar cifrele numărului y sunt egale, în ordine, cu cifrele aflate după punctul zecimal. Exemplu: pentru x=12 şi y=543, subprogramul returnează valoarea 12.543.

39. a) Scrieţi definiţia completă a unui subprogram primul, care - primeşte prin singurul său parametru, a, o valoare naturală din intervalul [2,10000] - returnează o valoare naturală reprezentând cel mai mic divizor al numărului a mai mare strict decât 1. b) Fişierul text NUMERE.IN conţine pe prima linie un număr natural nenul n(1≤n≤100) şi peurmătoarea linie n numere naturale din intervalul [2,10000] separate prin câte un spaţiu. Un număr natural n se numeşte „aproape prim” dacă este egal cu produsul a două numere prime distincte. De exemplu, numărul 14 este „aproape prim” pentru că este egal cu produsul numerelor prime 2 şi 7. Scrieţi un program C/C++ care determină, folosind apeluri utile ale suprogramului primul, cel mai mare număr „aproape prim” de pe linia a doua a fişierului NUMERE.IN. În cazul în care există un astfel de număr se afişează pe ecran mesajul DA, urmat de numărul determinat, iar în caz contrar mesajul NU. Exemplu: dacă fişierul NUMERE.IN are conţinutul: 6 100 14 21 8 77 35 atunci se afişează pe ecran DA 77 pentru că numărul 77 este cel cel mai mare dintre numerele „aproape prime” din fişier (14=7*2,21=7*3,77=7*11, 35=7*5).

40.Scrieţi definiţia completă a subprogramului multipli, cu trei parametri a,b,c (a≤b),numere naturale din intervalul [1,10000] ce returnează numărul numărul multiplilor lui c din intervalul [a;b]. Exemplu: pentru a=10, b=27,c=5 subprogramul returnează valoarea 4.

41. Scrieţi definiţia completă a subprogramului suma care primeşte ca parametru untablou unidimensional x cu cel mult 100 de elemente, numere reale, un număr natural n ce reprezintă numărul efectiv de elemente ale tabloului x (n≤100), şi un număr natural m (n<m). Subprogramul returnează suma obţinută din cele mai mici m elemente ale tabloului x.

42. Scrieţi definiţia completă a subprogramului nr_prim care are ca parametru un numărnatural x şi returnează cel mai mic număr prim, strict mai mare decât x. Exemplu: pentru x=25 subprogramul returnează numărul 29, iar pentru x=17 valoarea returnată va fi 19.