# PBinfo #3795 – Paranteze4 – Rezolvare C++

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

## Enunț

Cerința
Să se scrie un program care citește un șir de paranteze rotunde care se închid corect (corect parantezat) în care parantezele deschise sunt numerotate de la stânga la dreapta, începând de la 1, și determină pentru fiecare paranteză închisă numărul de ordine al parantezei deschise corespunzătoare.

Un șir de paranteze rodunde S 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
Programul citește de la tastatură șir de paranteze rotunde, corect parantezat.

Date de ieșire
Programul va afișa pe ecran, pentru fiecare paranteză închisă, poziția în șir a parantezei deschise corespunzătoare.

Restricții și precizări

șirul citit va conține cel mult 254 de caractere, numai ( și );
în șirul dat caracterele sunt numerotate de la 1.

Exemplu:
Intrare

()((()())())
Ieșire

1 4 5 3 6 2 
Explicație

1   2 3 4   5     6
( ) ( ( ( ) ( ) ) ( ) )
  1       4   5 3   6 2

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int Stiva[1000], nrS = 0;
int main()
{
    char S[256];
    cin >> S;
    int cnt = 0;
    for(int i = 0 ; S[i] ; i ++)
        if(S[i] == '(')
            Stiva[++nrS] = ++ cnt;
        else
        {
            cout << Stiva[nrS] << " ";
            nrS --;
        }
    return 0;
}
```

## Resurse

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