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