Commit 2110e29d authored by vgsb18's avatar vgsb18 🦍

leitura implementada, atualizando, realizando calculo com base no vetor da pilha

parent 18d956c2
No preview for this file type
#include <stdio.h>
#include <stdlib.h>
#include "tad_pilha.h"
int main()
{
if (avalia_sequencia())
tad_pilha *p;
p = malloc(sizeof(tad_pilha));
inicializa_pilha(p);
p = empilhadeira(p);
if (avalia_sequencia(p))
printf("SIM\n");
else
printf("NAO\n");
......
a
b
a
c
a
t
e
0
\ No newline at end of file
#include <stdio.h>
#include <stdlib.h>
#include "tad_pilha.h"
/* aqui vao as declaracoes iniciais e os codigos das funcoes */
/* inicio das suas modificacoes nesta parte */
/* fim das suas modificacoes desta parte */
/* O codigo abaixo so pode ser modificado para resolver o */
/* problema da passagem de endereços como parâmetros! */
/* Deixe o restante do programa inalterado!!! */
int pilha_cheia (tad_pilha *p)
{
if (p -> tam == MAX)
......@@ -32,7 +20,7 @@ int tamanho_pilha(tad_pilha *p)
int tamanho = p -> tam;
return tamanho;
}
int empilha(int i, tad_pilha *p)
int empilha(char i, tad_pilha *p)
{
if (!pilha_cheia(p))
{
......@@ -44,7 +32,7 @@ int empilha(int i, tad_pilha *p)
else
return 0;
}
int topo(int *i, tad_pilha *p)
int topo(char *i, tad_pilha *p)
{
if (p -> topo != 0)
{
......@@ -55,9 +43,9 @@ int topo(int *i, tad_pilha *p)
return 0;
}
int desempilha(int *t, tad_pilha *p)
int desempilha(char *t, tad_pilha *p)
{
if ((p -> topo )> 0)
if ((p -> topo) > 0)
{
p -> v[p -> tam-1] = 0;
p -> tam -= 1;
......@@ -97,12 +85,40 @@ char repetidor(char rep, int *val)
}
return y;
}
int *avalia_sequencia()
char identifica_mark(mark,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;
char mark1, mark2, mark3;
char dmark1, dmark2, dmark3;
for( i = 1; i < p -> tam; i++)
{
printf("%c\n",p -> v[i] );
}
return 1;
}
tad_pilha *empilhadeira(tad_pilha *p)
{
char x;
char z;
scanf("%c",&x);
int *validate = 0;
repetidor(x,validate);
return validate;
while (x != '0')
{
if (empilha(x,p))
printf("empilhou brother\n");
else
printf("não empilhou\n");
scanf(" %c",&x);
}
return p;
}
\ No newline at end of file
#ifndef __PILHA__
#define __PILHA__
#define MAX 1000
#define MAX 50
typedef struct tad_pilha
{
......@@ -9,20 +9,24 @@ typedef struct tad_pilha
int v[MAX];
} tad_pilha;
char repetidor(char rep, int *val);
int *avalia_sequencia();
int pilha_cheia (tad_pilha *p);
void inicializa_pilha(tad_pilha *p);
int tamanho_pilha(tad_pilha *p);
int empilha(int i, tad_pilha *p);
int empilha(char i, tad_pilha *p);
int topo(char *i, tad_pilha *p);
int desempilha(char *t, tad_pilha *p);
char repetidor(char rep, int *val);
char identifica_mark(mark,dmark)
int topo(int *i, tad_pilha *p);
tad_pilha *empilhadeira(tad_pilha *p);
int desempilha(int *t, tad_pilha *p);
int avalia_sequencia(tad_pilha *p);
#endif
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