[ ssnnaaxx @ 01.02.2006. 12:24 ] @
imam jedan problem s jednim programom,nikako da ga riješim,radi se o programu koji treba da ispituje tačnost zagrada ... primjer:

kad upišemo ovo {2+[2(3-1)]-2} da ispiše ispravno a
kad upišemo ovo {2+[2(3-1)]-2 da ispiše neispravno jer fali jedna zagrada , a to bi morao uraditi preko funkcija ,,, hvala!!!!
[ Neznalica_sa_ugla @ 01.02.2006. 12:34 ] @
Mislim da nije problem uvesti brojac zagrada kada se zagrada otvori brojac se uverca , a kada se zatvori brojac smani , zagrade su ok ako je brojac == 0
[ dimitar 16 @ 01.02.2006. 12:52 ] @
Pri ucitavanje broj otvoreni zagrada ne sme da bude manji od broj zatvoreni zagrada, t.e treba brojac >= 0, a na kraj mora da bude brojac == 0.
[ ssnnaaxx @ 01.02.2006. 13:02 ] @
hvala , al je problem sto nisam bas najbolji u programiranju pa ne znam kako to da uradim preko funkcija .... ??
[ dimitar 16 @ 01.02.2006. 20:56 ] @
Code:
#include <iostream>

using namespace std;

int main()
{
    char c;
    int n, br = 0, f = 1;

    cin >> n;
    for (int i=0; i<n; i++) {
        cin >> c;
    if (c=='(' || c=='[' || c=='{') ++br; else
        if (c==')' || c==']' || c=='}') --br;
    if (br < 0) {
           cout << "greska";
           f = 0;
           break;
        }
    }
    if (f && br==0) cout << "ok";
}
[ ssnnaaxx @ 01.02.2006. 21:49 ] @
tnx prijatelju
[ blaza @ 01.02.2006. 23:47 ] @
To resenje ne pije vodu - npr. sta ako parovi otvorena zagrada/zatvorena zagrada nisu istog tipa?
Code:
primer1. {2+3]
primer2. ([3*7)+2]
[ NrmMyth @ 02.02.2006. 07:57 ] @
HINT: rekurzivna provjera!
[ blaza @ 02.02.2006. 11:28 ] @
Mozda je bolje upotrebiti stack.
[ djordje @ 02.02.2006. 12:13 ] @
napisi 3 petlje za svaki tip zagrade posebno
[ japan @ 02.02.2006. 12:38 ] @
mislim da ni to ne pije vodu... {[2*3}]...

jedino resenje je stack... na stack se stavljaju leve zagrade, a skida se sa stacka kad naidje odgovarajuca desna. ako desna nije odgovarajuca, prijavi se greska. na kraju se samo proveri da li je stack prazan.