# PBinfo #808 – Mutare – Rezolvare C++

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

## Enunț

Cerinţa
Scrieţi definiția completă a subprogramului C++ sub care are 3 parametri: n – prin care primește un număr natural, v, prin care primeşte un tablou unidimensional cu n elemente, numere naturale cu cel mult 4 cifre și x, prin care primeşte un număr natural. Cel puțin un element al tabloului v are valoarea x.

Subprogramul modifică ordinea valorilor din tablou, astfel încât toate valorile egale cu x să ocupe primele poziţii din v, iar celelalte valori să se regăsească în continuarea acestora, în ordinea inițială. Tabloul modificat este furnizat tot prin parametrul v.

Restricţii şi precizări

2<n<50
numele subprogramului cerut este sub
parametrii sunt, în această ordine: n, v, x
elementele tabloului v sunt indexate de la zero

Exemplu:
Dacă n=9, v=(2, 1, 0, 1, 7, 0, 1, 4, 5) şi x=1, atunci, după apel, v=(1, 1, 1, 2, 0, 7, 0, 4, 5).

Important
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

## Cod sursă C++

```cpp
void sub(int n, int v[], int x)
{
	int cnt = 0;
	for(int i = n -1 ; i >= cnt ; )
		if(v[i] == x)
		{
			cnt ++;
			for(int j = i ; j > 0 ; j --)
				v[j] = v[j-1];
		}
		else
			i --;
	for(int i = 0 ; i < cnt ; i ++ )
		v[i] = x;
}
```

## Resurse

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