# PBinfo #848 – Paranteze1 – Rezolvare C++

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

## Enunț

Cerința
Se dau n șiruri de paranteze rotunde. 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 = AB, iar A și B sunt corect parantezate.

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

Date de ieșire
Fișierul de ieșire paranteze1.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:
paranteze1.in

4
(())
)(()
()((()())())
()(
paranteze1.out

1
0
1
0

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("paranteze1.in");
ofstream fout("paranteze1.out");
int n;
char s[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] == '(')
				nivel ++;
			else
				if(nivel > 0)
					nivel --;
				else
					ok = 0;
		if(nivel > 0)
			ok = 0;
		fout << ok << "\n";
	}
}
```

## Resurse

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