[ A90 @ 07.05.2006. 19:43 ] @
Pozdrav svima

Kako mogu sljedeci kod uraditi preko stack-a?

#include <iostream.h>
#include<conio.h>

bool valid(const char * t)
{
unsigned int z[3] = {0};

while(*t) {
switch(*t){
case '(':
z[2]++;
break;

case ')':
if(z[2]==0)
{
cout << "Suvisna ')'.\n";
return false;
}

z[2]--;
break;


case '[':
if(z[2])
{
cout << "Nedozvoljeno otvaranje '['\n";
return false;
}
z[1]++;
break;

case ']':
if(!z[1])
{
cout << "Suvisna ']'.\n";
return false;
}
if(z[2])
{
cout << "Nedozvoljeno zatvaranje ']'.\n";
return false;
}
z[1]--;
break;


case '{':
if(z[2] || z[1])
{
cout << "Nedozvoljeno otvaranje '{'.\n";
return false;
}
z[0]++;
break;

case '}':
if(!z[0])
{
cout << "Suvisna '}'.\n";
return false;
}
if(z[1] || z[2])
{
cout << "Nedozvoljeno '}'.\n";
return false;
}
z[0]--;
}

t++;
}

if(z[0]||z[1]||z[2])
{
cout << "Nezatvorene zagrade:" << (z[0]?" {":" ") <<
(z[1]?" [":" ") << (z[2]?" (":"") << '\n';
return false;
}
cout<<"Zagrade su dobro zatvorene!";
return true;

}

void main()
{
char text[500];
cout<<"Unesite relaciju:";
cin.getline(text,500);

valid(text);
char z;
cin>>z;
getch();
}

Program provjerava ispravnost zagrada,tj.da li su sve zagrade u relaciji ispravno unesene.

Unaprijed hvala
[ #Ninja# @ 07.05.2006. 20:52 ] @
Evo u attachmentu. A ovaj kod ti ne radi baš najbolje. I sljedeći put stavi CODE tagove oko koda da bude čitljiviji.