Subprograme+recursive

Probleme recursivitate

=Recursivitate pentru prelucrare număr=
 * 1) Se dă un număr natural n citit de la tastatură. Să se verifice printr-o funcţie recursivă dacă numărul este prim sau nu.
 * 2) Se citeşte de la tastatură un număr natural n de maxim 9 cifre. Utilizând o funcţie fără tip recursivă să se afişeze scrierea numărului ca puteri ale lui 2.
 * 3) Câte cifre impare conţine un număr natural?
 * 4) Verificaţi dacă o cifră k se află printre cifrele unui număr natural dat.
 * 5) Să se verifice daca un numar natural contine o cifra para
 * 6) Sa se scrie o functie recursiva care primeste un parametru n numar natural si afiseaza cifrele sale in ordinea din el si separate prin cate un spatiu.

=Recursivitate pentru prelucrare secvente de n valori /Vectori numerici=

**Citire si afisare vectori (recursiv)**
void citeste(int a[],int i, int n)
 * **#include **
 * using namespace std; **


 * if(i>a[i]; **
 * citeste(a,i+1,n); **
 * } **
 * }**
 * }**


 * void citeste2(int a[], int n) **
 * if(n>=0) **
 * citeste2(a,n-1); **
 * cout<<"a["<>a[n]; **
 * } **
 * } ** || ** void scrie(int a[],int i, int n) **
 * if(i=0) **
 * scrie2(a,n-1); **
 * cout<=0) **
 * {cout<>n;**


 * //citeste(a,0,n);//**

//**citeste2(a,n-1);**//


 * scrie(a,0,n);**


 * scrie2(a,n-1);**


 * cout< a) Să se calculeze şi să se afişeze suma componentelor pozitive din vector. b) Să se verifice dacă componentele vectorului sunt ordonate crescător. Se va afişa un mesaj adecvat. Fie n=5 şi vectorul cu componentele (5,-4,3,7,-1). Se va afişa valoarea 15 şi mesajul “Vectorul nu este ordonat”. 
 * 1) Sa se calculeze recursiv de cate ori apare o valoare intreaga x intr-un vector a cu n elemente intregi.
 * 2) Se citesc numere dintr-un fişier de intrare bac.in .Verificaţi printr-o funcţie recursiva dacă există cel puţin un număr prim.
 * 3) Să se verifice dacă printre n numere citite se găseşte un număr care are suma cifrelor un număr prim folosind minim o funcţie recursivă
 * 4) Se citeste de la tastatură un şir cu n componente numere întregi. Să se returneze prin intermediul a doi parametri suma elementelor pare, respectiv produsul elementelor impare. Se va utiliza o funcţie fără tip recursivă.
 * 5) De la tastatură se citeşte un şir a cu n componente numere reale. Să se afişeze, printr-o funcţie recursivă, elementele şirului în ordine inversă.
 * 6) Se dă un şir a cu n componente numere întregi şi o valoare k. Să se permute circular elementele şirului cu k poziţii la stânga.
 * 7) Să se afişeze toate numerele prime cuprinse între două valori naturale citite a si b.
 * 8) Câte componente pare situate pe poziţii pare conţine un vector de numere naturale
 * 9) Se da un vector de numere întregi. Să se transforme fiecare element din baza 10 in baza 2 folosind o funcţie recursivă pentru transformare.
 * 10) De la tastatură se citeşte un şir a cu n componente numere reale. Să se afişeze, printr-o funcţie fără tip recursivă, elementele şirului care sunt pătrate perfecte în ordinea inversă apariţiei în şir.
 * 11) Se dă un vector cu n componente numere întregi (datele se citesc de la tastatură, n<=50). Răspundeţi următoarelor cerinţe, utilizând subprograme recursive:
 * Exemplu: **

= ** Set II ** = > - vectorul c contine elementele impare din vectorul a > Se vor folosi functii recursive pentru citire si afisare, precum si pentru construirea celor doi vectori ceruti. > Exemplu: > date.in > 7 > 2 5 7 9 2 5 4 > date.out > 2 2 4 > 5 7 9 5 > c) Se citeste un numar n si un vector a cu n elemente numere naturale. Folosind functia cifre determinati si afisati cifrele care apar de un numar maxim de ori in numerele din vectorul a. > Exemplu: n=6, a={7, 9, 373, 127, 733, 661} => 3 7 > 23 332 123 54 > se vor afisa valorile: 3 2 4 4
 * 1) Se dă un vector cu n componente numere naturale (datele se citesc de la tastatură, n<=50). Să se înlocuiască componentele neprime din vector cu numărul divizorilor acestora. Se vor utiliza subprogramele recursive: ** nrd ** care va implementa un algoritm de numărare a divizorilor unui număr natural şi ** inlocuire ** prin care se vor înlocui componentele neprime din vector. ** Exemplu: ** Dacă vectorul citit este (5,6,1,0,15), după înlocuire devine (5,4,1,0,4).
 * 2) Se dă un vector cu n componente numere naturale (datele se citesc de la tastatură, n<=50). Să se afişeze componentele vectorului care conţin o cifră dată, nenulă (cifra se citeşte de la tastatură). Se vor utiliza subprogramele recursive: - **verific** care va implementa un algoritm pentru verificarea existenţei unei cifre într-un număr; - **afiş** pentru afişarea componentelor unui vector care conţin o cifră dată. ** Exemplu: ** Dacă vectorul citit este (15,621,14,502,155) şi c=5 se vor afişa valorile: 15 502 155.
 * 3) Se citeste un vector a cu n elemente numere intregi. Construiti si afisati doi vectori b si c contruiti astfel: - vectorul b contine elementele pare din vectorul a
 * 1) a) Scrieti o functie recursiva cifra cu doi parametri n si c unde n e numar natural, iar c este o cifra si care returneaza de cate ori apare cifra c printre cifrele numarului n. b) Scrieti o functie recursiva cifre cu trei parametri a, n si c unde a e un vector cu cel mult 100 de elemente numere naturale, n e numar natural reprezentand numarul de elemente din vectorul a, iar c este o cifra si care returneaza de cate ori apare cifra c in total in cele n numere din vectorul a (va folosi functia cifra).
 * 1) Se citeste un vector a cu n elemente numere naturale. Inlocuiti fiecare element din vector cu suma cifrelor care au aceeasi paritate cu pozitia elementului. Se vor folosi functii recursive pentru toate prelucrarile. Ex: 4
 * 1) Se citeste un vector a cu n elemente numere intregi. Construiti un vector b care sa contina elementele distincte din vectorul a. Toate prelucrarile vor fi realizate folosind functiile recursive pentru citire, afisare, cautare, constructie vector b.

=Recursivitate pentru prelucrarea matricelor=


 * 1) Din fişierul text MAT.IN se citeşte o matrice pătratică de dimensiune nxn. Să se afişeze, printr-o funcţie recursivă, elementele de sub diagonala principală, exclusiv diagonala.
 * 2) Verificaţi dacă o matrice este triunghiular superioară, faţă de diagonal principală, folosind o funcţie recursivă.
 * 3) Din fişierul text MAT.IN se citeşte o matrice pătratică de dimensiune nxn. Să se afişeze, printr-o funcţie fără tip recursivă, elementele de sub diagonala secundară, inclusiv diagonala.
 * 4) Din fişierul text MAT.IN se citeşte o matrice pătratică de dimensiune nxn. Să se afişeze, printr-o funcţie fără tip recursivă, elementele de deasupra diagonalei principale, inclusiv diagonala.