Commit cf20bf4e authored by vgsb18's avatar vgsb18 🦍

Terminado

parent c8bd9760
No preview for this file type
(
[
{
}
]
)
0
\ No newline at end of file
{ [ ] { } } 0
\ No newline at end of file
......@@ -13,7 +13,7 @@ int pilha_cheia (tad_pilha *p)
void inicializa_pilha(tad_pilha *p)
{
p -> tam = 0;
p -> topo = 0;
p -> topo = ' ';
}
int tamanho_pilha(tad_pilha *p)
{
......@@ -85,39 +85,101 @@ char repetidor(char rep, int *val)
}
return y;
}
char identifica_mark(char mark, char dmark)
{
if (mark == '(')
dmark = ')';
else if (mark == '[')
dmark = ']';
else if (mark == '{')
dmark = '}';
return dmark;
}
int avalia_sequencia(tad_pilha *p)
{
int i;
int tr1, tr2, tr3 = 0;
int c1 = 0,c2 = 0,c3 = 0;
int final = 1;
int global = 1;
char mark1, mark2, mark3;
char dmark1 ='0', dmark2 = '0', dmark3 = '0';
mark1 = '(';
dmark1 = identifica_mark(mark1,dmark1);
int m[MAX];
char lixo = ' ';
tad_pilha ordem;
ordem.tam = 0;
ordem.topo = ' ';
for( i = 0; i < p -> tam; i++)
{
switch(p -> v[i])
{
case '{':
{
c1++;
if (c1 < 0)
global = 0;
empilha('{',&ordem);
}
break;
case '}':
{
c1--;
if (c1 < 0)
global = 0;
if (ordem.topo != '{' )
global = 0;
else
desempilha(&lixo,&ordem);
mark2 = '[';
dmark2 = identifica_mark(mark2,dmark2);
}
break;
case '[':
{
c2++;
if (c2 < 0)
global = 0;
empilha('[',&ordem);
}
break;
case ']':
{
c2--;
if (c2 < 0)
global = 0;
if (ordem.topo != '[' )
global = 0;
else
desempilha(&lixo,&ordem);
mark3 = '{';
dmark3 = identifica_mark(mark3,dmark3);
}
break;
case '(':
{
c3++;
if (c3 < 0)
global = 0;
empilha('(',&ordem);
}
break;
case ')':
{
c3--;
if (c3 < 0)
global = 0;
if (ordem.topo != '(' )
global = 0;
else
desempilha(&lixo,&ordem);
}
break;
default:
printf("Caractere nao permitido, tente novamente!\n");
return 0;
for( i = 0; i < p -> tam; i++)
}
}
if (c1 == 0 && c2 == 0 && c3 == 0)
{
printf("%c\n",p -> v[i] );
if (global)
final = 1;
else
final = 0;
}
return 1;
else
final = 0;
return final;
}
tad_pilha *empilhadeira(tad_pilha *p)
......@@ -126,10 +188,8 @@ tad_pilha *empilhadeira(tad_pilha *p)
scanf("%c",&x);
while (x != '0')
{
if (empilha(x,p))
printf("empilhou brother\n");
else
printf("não empilhou\n");
if (!empilha(x,p))
printf("não empilhou, pilha cheia\n");
scanf(" %c",&x);
}
return p;
......
......@@ -5,7 +5,7 @@
typedef struct tad_pilha
{
int tam;
int topo;
char topo;
int v[MAX];
} tad_pilha;
......@@ -23,8 +23,6 @@ int desempilha(char *t, tad_pilha *p);
char repetidor(char rep, int *val);
char identifica_mark(char mark, char dmark);
tad_pilha *empilhadeira(tad_pilha *p);
int avalia_sequencia(tad_pilha *p);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment