# PBinfo #852 – Paranteze3 – Rezolvare C++

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

## Enunț

Cerința
Se dau n șiruri de paranteze rotunde sau pătrate. Să se stabilească, despre fiecare șir, dacă este corect parantezat – adică dacă parantezele se închid corect.

Un șir de paranteze S rotunde este corect parantezat dacă:


S este șirul vid, sau
S = (T) și T este corect parantezat, sau
S = [T] și T este corect parantezat, sau
S = AB, iar A și B sunt corect parantezate.

Date de intrare
Fișierul de intrare paranteze3.in conține pe prima linie numărul n, pe următoarele n linii câte un șir de paranteze rotunde sau pătrate.

Date de ieșire
Fișierul de ieșire paranteze3.out va conține n linii: fiecare linie va conține valoarea 1, dacă șirul corespunzător de paranteze este corect parantezat și 0 în caz contrar.

Restricții și precizări

1 ≤ n ≤ 100
fiecare șir va avea cel mult 255 de paranteze

Exemplu:
paranteze3.in

4
()[]
)([]
()[(()[])()]
([)]
paranteze3.out

1
0
1
0

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("paranteze3.in");
ofstream fout("paranteze3.out");
int n;
char s[256];
char stiva[256];
int main()
{
	fin >> n;
	for(int k = 1 ; k <= n ; k ++)
	{
		fin >> s;
		int ok = 1;
		int nivel = 0;
		for(int i = 0 ; s[i] && ok ; i ++)
			if(s[i] == '(')
				stiva[++nivel]='(';
			else
				if(s[i] == '[')
					stiva[++nivel]='[';
				else
					if(nivel > 0)
					{
						if(s[i] == ')')
							if(stiva[nivel] == '(')
								nivel --;
							else
								ok = 0;
						else
							if(stiva[nivel] == '[')
								nivel --;
							else
								ok = 0;
					}
					else
						ok = 0;
		if(nivel > 0)
			ok = 0;
		fout << ok << "\n";
	}
}
```

## Resurse

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