# PBinfo #850 – Repetitii – Rezolvare C++

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

## Enunț

Cerința
Se consideră un șir de caractere format numai din litere mici ale alfabetului englez. Dacă șirul conține subșiruri consecutive care se repetă, el poate fi scris condensat. De exemplu, șirul mamateteter poate fi scris (ma)2(te)3r – subșirul care se repetă se scrie între paranteze rotunde, urmat de numărul de apariții.

Dându-se un șir în forma condensată, să se determine șirul în forma inițială.

Date de intrare
Programul citește de la tastatură șirul s, în forma condensată.

Date de ieșire
Programul va afișa pe ecran șirul t, în forma inițială.

Restricții și precizări

lungimea șirurilor s și t nu depășește 255 caractere
șirul condensat nu va conține paranteze în alte paranteze

Exemplu:
Intrare

(ma)2(te)3r
Ieșire

mamateteter

## Cod sursă C++

```cpp
#include <iostream>
#include <iostream>
#include <cstring>
using namespace std;
int n;
char s[256] , t[256];
int main()
{
	cin >> s;
	int n = strlen(s) , m = 0;
	for(int i = 0 ; i < n ; i++)
		if(s[i] >= 'a' && s[i] <= 'z')
			t[m ++] = s[i] , t[m] = 0;
		else
		{
			// este paranteza rotunda
			i ++;
			int st = i;
			while(s[i] != ')')
				i ++;
			int dr = i - 1;
			i ++;
			int x = 0;
			while(s[i] >='0' && s[i] <='9')
				x = 10 * x + s[i] -'0', i ++;
			s[dr + 1] = 0;
			//cout << s+ st << " " << x <<  endl;
			for(int j = 1 ; j <= x ; j ++)
				strcat(t , s+st);
			m = strlen(t);
			i -- ;
		}
	cout << t;
	return 0;
}
```

## Resurse

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