# PBinfo #4324 – InlocuireRec – 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 cu produsul dintre numărul de cifre și prima cifră. 

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
numar_cifre, care determină numărul de cifre ale 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, 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 718 18 75 14 5209 49
Ieșire

14 21 2 14 2 20 8   
Explicație
73 se înlocuiește cu 14, 718 cu 21, 18 cu 2, etc.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
void citire(int A[], int n)
{
    if(n>0)
    {
        citire(A,n-1);
        cin>>A[n];
    }
}
void afisare(int A[], int n)
{
    if(n>0)
    {
        afisare(A,n-1);
        cout<<A[n]<<" ";
    }
}
int numar_cifre(int n)
{
    if(n<=9) return 1;
    else return 1+numar_cifre(n/10);
}
int prima_cifra(int n)
{
    if(n<=9) return n;
    else return prima_cifra(n/10);
}
void inlocuire(int A[], int n)
{
    if(n>0)
    {
        inlocuire(A,n-1);
        A[n]=numar_cifre(A[n])*prima_cifra(A[n]);
    }
}
int main()
{
    int n,A[1002];
    cin>>n;
    citire(A,n);
    inlocuire(A,n);
    afisare(A,n);
    return 0;
}
```

## Resurse

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