problemas na funçãoda pilha trocar o topo pela base e vice versa. [RESOLVIDO]

13. Re: problemas na funçãoda pilha trocar o topo pela base e vice versa. [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 17/03/2016 - 23:22h

Resolvido

Um pouco de boa vontade pessoal, nem todo mundo domina e o propósito do fórum é a ajuda mútua!

Nem ler o que pedi fizeram...




void trocatopobase(struct x *pilha){// função troca base  topo
	  int aux1, aux2, i;
	  aux1 = pilha ->itens[pilha->topo-1];
	  aux2 = pilha ->itens[pilha->topo-4];
	  
	  printf("topo = %3d \n", pilha ->itens[pilha->topo -1]);
	  
	  printf("aux1 = %3d\n", aux1);
	  printf("aux2 = %3d\n", aux2);
	  
	  printf("\nItens sem trocar\n");  
	   for(i=0; i<= 3; i++) 	  
	    printf("%3d\n",  pilha ->itens[pilha->topo - i-1]);
	  
	 printf("\n\nTrocando Topo com Base\n");  
	  pilha ->itens[pilha->topo-1] = aux2;
	  pilha ->itens[pilha->topo-4] = aux1;
	  
	  for(i=0; i<= 3; i++) 	  
	    printf("%3d\n",  pilha ->itens[pilha->topo - i-1]); 
	  
	 
	}
 


saída:
mbrainiac@hotpc:~/Área de trabalho/C_programas/Estruturas$ ./aula4tr1a.x

<<< PROGRAMA PILHA >>


0: Sair

1: Inserir itens

2: Remover itens

3: Imprimir tamanho

4: Imprimir item topo

Entre com a opcao desejada:
0
Quer continuar a alterar pilha?
Digite 's' para Sim
Ou tecle qualquer tecla para sair:
u
topo = 3
aux1 = 3
aux2 = 1

Itens sem trocar
3
9
5
1


Trocando Topo com Base
1
9
5
3
mbrainiac@hotpc:~/Área de trabalho/C_programas/Estruturas$


  


14. Re: problemas na funçãoda pilha trocar o topo pela base e vice versa. [RESOLVIDO]

Lucas Ferreira dos santos
lksmodos

(usa Ubuntu)

Enviado em 18/03/2016 - 09:54h

mbrainiac escreveu:

Resolvido

Um pouco de boa vontade pessoal, nem todo mundo domina e o propósito do fórum é a ajuda mútua!

Nem ler o que pedi fizeram...




void trocatopobase(struct x *pilha){// função troca base  topo
	  int aux1, aux2, i;
	  aux1 = pilha ->itens[pilha->topo-1];
	  aux2 = pilha ->itens[pilha->topo-4];
	  
	  printf("topo = %3d \n", pilha ->itens[pilha->topo -1]);
	  
	  printf("aux1 = %3d\n", aux1);
	  printf("aux2 = %3d\n", aux2);
	  
	  printf("\nItens sem trocar\n");  
	   for(i=0; i<= 3; i++) 	  
	    printf("%3d\n",  pilha ->itens[pilha->topo - i-1]);
	  
	 printf("\n\nTrocando Topo com Base\n");  
	  pilha ->itens[pilha->topo-1] = aux2;
	  pilha ->itens[pilha->topo-4] = aux1;
	  
	  for(i=0; i<= 3; i++) 	  
	    printf("%3d\n",  pilha ->itens[pilha->topo - i-1]); 
	  
	 
	}
 


saída:
mbrainiac@hotpc:~/Área de trabalho/C_programas/Estruturas$ ./aula4tr1a.x

<<< PROGRAMA PILHA >>


0: Sair

1: Inserir itens

2: Remover itens

3: Imprimir tamanho

4: Imprimir item topo

Entre com a opcao desejada:
0
Quer continuar a alterar pilha?
Digite 's' para Sim
Ou tecle qualquer tecla para sair:
u
topo = 3
aux1 = 3
aux2 = 1

Itens sem trocar
3
9
5
1


Trocando Topo com Base
1
9
5
3
mbrainiac@hotpc:~/Área de trabalho/C_programas/Estruturas$


Você tem as funções empilha e desempilha prontas .......não há necessidade de mexer nas posições diretas da pilha , e só uma brincadeira de empilha e desempilha ....mas enfim se acho mais viável desse jeito.



15. Re: problemas na funçãoda pilha trocar o topo pela base e vice versa. [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 19/03/2016 - 12:14h

Pilhas puras só possuem operações de empilhar e desempilhar, o que significa que só se pode mexer no topo. Assim sendo, a única maneira de chegar até a base é desempilhar tudo o que está em cima dessa base.

Se você tem acesso a outros elementos, então você está trabalhando com vetores ou listas, não com pilhas.

E, sim, eu vi desde o começo que sua “pilha” era implementada usando um vetor. Se você tivesse dito que queria trocar dois elementos do vetor, as respostas -- tanto minha quanto dos demais --teriam sido outras. Você insistiu em perguntar sobre pilhas, e recebeu respostas a respeito de pilhas, como é natural.

Você poderia tomar este tópico como lição. Se você quiser que o computador faça o que você deseja que ele faça, tem de saber expressar seus desejos em termos exatos; se os expressar em termos errados, vai receber resultados correspondentes ao que tiver expressado, não ao que você gostaria que tivesse sido entendido.

(Aliás, num tribunal é a mesma coisa. Tudo o que você disser pode ser -- e será -- usado contra você.)



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts