# PBinfo #4541 – InlocuireRec1 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dă un tablou cu n elemente, numere naturale. Să se înlocuiască fiecare element din tablou care începe cu cifră pară cu suma cifrelor sale. 

Se vor defini și apela următoarele subprograme recursive:


citire, care citește de la tastatură cele n elemente ale unui tablou
afisare, care afișează pe ecran elementele tabloului separate prin exact un spațiu
suma_cifre, care determină suma cifrelor unui număr dat ca parametru
prima_cifra, care determină prima cifră a unui număr dat ca parametru
inloc, care realizează înlocuirile cerute.

În programele C/C++ nu se vor folosi variabile globale.

Date de intrare
Se citește de la tastatură numărul n, iar apoi cele n elemente ale tabloului.

Date de ieșire
Se vor afișa pe ecran elementele tabloului obținut, separate prin exact un spațiu. 

Restricții și precizări

1 ≤ n ≤ 1000
elementele tabloului vor fi mai mici decât 1.000.000.000

Exemplu:
Intrare

7
73 418 218 75 2124 5209 49
Ieșire

73 13 11 75 9 5209 13

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
void citire(int n , int a[])
{
	if(n > 0)
	{
		citire(n-1 , a);
		cin >> a[n];
	}
}
void afisare(int n , int a[])
{
	if(n > 0)
	{
		afisare(n-1 , a);
		cout << a[n] << " ";
	}
}
int prima_cifra(int n)
{
	if(n < 10)
		return n;
	else
		return prima_cifra(n / 10);
}
int suma_cifre(int n)
{
	if(n < 10)
		return n;
	else
		return n%10 + suma_cifre(n / 10);
}
void inloc(int n , int a[])
{
	if(n > 0)
	{
		inloc(n-1 , a);
		if(prima_cifra(a[n]) % 2 == 0)
			a[n]  = suma_cifre(a[n]);
	}
}
int main(){
	int n, a[1005];
  	cin >> n;
  	citire(n , a);
  	inloc(n , a);
  	afisare(n , a);
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4541)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4541/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4541/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
