Rezolvare completă PbInfo #848 Paranteze1

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

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Paranteze1:

#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";
    }
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #848 Paranteze1

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #848 Paranteze1 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!