Poslednu dobu sa snazim riesit priklady na liahen.ksp.sk, narazil som vsak na priklad s ktorym si neviem dat rady, vsetky mozne vstupy ktore testujem u mna na pc mi idu, trapim sa s tym uz hodne dlho tak som sa rozhodol pre poslednu moznost - poradit sa s Vami na fore
Bol by som moc rad keby ste mi pomohli zistit ci mam v programe chybu, a kde, dakujem
tu je zadanie a moj kod
Kód: Vybrať všetko
Vstup
V prvom riadku vstupu je jedno celé číslo N (1 ≤ N ≤ 100), udávajúce počet riadkov Kubkovho výpočtu.
Nasleduje N riadkov. Každý z nich obsahuje zátvorky z jedného riadku Kubkovho výpočtu. Presnejšie, každý riadok obsahuje jeden reťazec tvorený aspoň 1 a najviac 100 znakmi ()[]{}.
Výstup
Tvoj program by mal vypísať N riadkov – pre každý výraz zo vstupu vypíš ANO alebo NIE, podľa toho, či je dobre uzátvorkovaný. Kód: Vybrať všetko
#include <stack>
#include <iostream>
#include <string>
using namespace std;
int i;
char pole[150];
char reverse(char c){
if(c == ']')return '[';
if(c == ')')return '(';
if(c == '}')return '{';
}
int main() {
scanf("%i",&i);
while(i--)
{
scanf("%s",&pole);
int j;
stack<char> S;
for(j=0;j<strlen(pole);j++){
if(S.empty())
{
S.push(pole[j]);
}else{
if(S.top()==reverse(pole[j])) S.pop(); else S.push(pole[j]);
}
}
cout << (S.empty() ? "ANO" : "NIE") << endl;
}
return 0;
}