#include <stdio.h>
#include <stdlib.h>
struct EST_PILHA
{
int TOPO;
char INFO[1000];
};
struct EST_PILHA Cria (void)
{
struct EST_PILHA P;
P.TOPO = 0;
return P;
}
struct EST_PILHA PUSH(int Valor, struct EST_PILHA P)
{
P.TOPO++;
P.INFO[P.TOPO] = Valor;
return P;
}
char POP(struct EST_PILHA *P)
{
char Valor;
Valor = (*P).INFO [(*P).TOPO];
(*P).TOPO--;
return Valor;
}
void ExibirPilha(struct EST_PILHA P, int var1,int var2)
{
if(var1 == var2)
{
printf("%d",var1);
}
else if(var1 > var2)
{
printf("%d",var2);
}
else if(var2 < var1)
{
printf("%d",var1);
}
else
{
printf("Invalido.\n");
}
}
int main()
{
int i=0,var1=0,var2=0;
char N[1000];
struct EST_PILHA Pilha;
Pilha = Cria();
scanf("%s",N);
for(i=0; N[i]!= '\0'; i++)
{
if(N[i] == '<')
{
Pilha = PUSH('<',Pilha);
var1++;
}
else if(N[i] == '>')
{
N[Pilha.TOPO] = POP(&Pilha);
var2++;
}
else
{
N[Pilha.TOPO] = POP(&Pilha);
}
}
ExibirPilha(Pilha,var1,var2);
return 0;
}
Diamantes e Areia: João está trabalhando em uma mina, tentando retirar o máximo que consegue de diamantes "<>". Ele deve excluir todas as particulas de areia "." do processo e a cada retirada de diamante, novos diamantes poderão se formar. Se ele tem como uma entrada .<...<<..>>....>....>>>., três diamantes são formados. O primeiro é retirado de <..>, resultando .<...<>....>....>>>. Em seguida o segundo diamante é retirado, restando .<.......>....>>>. O terceiro diamante é então retirado, restando no final .....>>>., sem possibilidade de extração de novo diamante.
Entrada
Deve ser lido um valor inteiro N que representa a quantidade de casos de teste. Cada linha a seguir é um caso de teste que contém até 1000 caracteres, incluindo "<,>, ."
Saída
Você deve imprimir a quantidade de diamantes possíveis de serem extraídos em cada caso de entrada.
OBS – Deve ser utilizado pilha.
Eu fiz o codigo mas não esta dando certo. Quando eu coloco >< ele também conta como um diamante
Se alguém puder me ajudar.