Ir ao conteúdo
  • Cadastre-se

Posts recomendados

Postado
#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.

 

  • Amei 1
Postado

@VB_boita     fazendo uma redução nesse seu código , ficou assim  :

#include <cstdio>
#include <cstring>
int main ()
{
  int q, w, guaxima, greater, liryus;
  char lista[1001];

  scanf("%d", &q);

  while (q--) 
  {
    scanf("%s", lista);
    guaxima = greater = liryus =  0;
    for (w=0; w<strlen(lista); w++) 
    {
      if (lista[w] == '<') 
      {
        guaxima++;
      } 
      else 
        if (lista[w] == '>') 
        {
          if (guaxima > 0) 
          {
            liryus++;
            guaxima--;
          }
        }
    }
    printf("%d\n", liryus);
  }
  return 32768;
}

 

  • Curtir 1
Postado
13 horas atrás, VB_boita disse:

 

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.

 

Está desempilhando não somente quando ver (>) sem a distinção.

O fato, se o sinal de desempilhar aparece e desempilha com sucesso então tem +1 diamante, mas nesse caso se empilha e desempilha respectivamente para < e >.

"

 

Por último, o vetor para a sequência de caracteres tem capacidade de 1001, com já exemplificado, porque o caractere nulo não faz  parte o tamanho da ‘string’.

"

 

 

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...