Crie um programa em Linguagem C, que remova (ou copie) os valores de uma fila, usando as regras de saída de uma pilha e os adicione em uma nova estrutura.
//Fun??o principal
int main(){
setlocale(LC_ALL, "Portuguese");
op = 1;
pilha.ini = 0;
pilha.fim = 0;
while (op != 0) {
system("cls");
pilha_mostrar();
menu_mostrar();
scanf("%d", &op);
switch (op) {
case 1:
pilha_entrar();
break;
case 2:
pilha_sair();
break;
}
}
return(0);
}
//Adicionar um elemento no final da Pilha
void pilha_entrar(){
if (pilha.fim == tamanho) {
printf("\nA pilha est? cheia, imposs?vel empilhar um novo elemento!\n\n");
system("pause");
}
else {
printf("\nDigite o valor a ser empilhado: ");
scanf("%d", &pilha.dados[pilha.fim]);
pilha.fim++;
}
}
//Retirar o ?ltimo elemento da Pilha
void pilha_sair() {
if (pilha.ini == pilha.fim) {
printf("\nA pilha est? vazia, n?o h? nada para desempilhar!\n\n");
system("pause");
}
else {
pilha.dados[pilha.fim-1] = 0;
pilha.fim--;
}
}
//Mostrar o conte?do da Pilha
void pilha_mostrar() {
int i;
printf("[ ");
for (i = 0; i < tamanho; i++) {
printf("%d ", pilha.dados);
}
printf("]\n\n");
}
//Mostrar o menu de op??es
void menu_mostrar() {
printf("\nEscolha uma op??o:\n");
printf("1 - Empilhar\n");
printf("2 - Desempilhar\n");
printf("0 - Sair\n\n");
}
eu sei que tenho que inserir o seguinte codigo em algum lugar, mas não consigo entender aonde, peço ajuda pra poder entender o funcionamento da função, e se estiver faltando alguma coisa, me mostrem pra eu entender a logica.
Pergunta
guilhermegoulart
preciso de ajuda para resolver o problema do titulo do tópico
fiz o algoritmo porem não consigo faze-lo executar, acredito que não estou colocando o bloco de codigo no lugar certo:
//Bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
//Constantes
#define tamanho 5
//Estrutura da Pilha
struct tpilha {
int dados[tamanho];
int ini;
int fim;
};
//Vari?veis globais
tpilha pilha;
int op;
//Protipa??o
void pilha_entrar();
void pilha_sair();
void pilha_mostrar();
void menu_mostrar();
//Fun??o principal
int main(){
setlocale(LC_ALL, "Portuguese");
op = 1;
pilha.ini = 0;
pilha.fim = 0;
while (op != 0) {
system("cls");
pilha_mostrar();
menu_mostrar();
scanf("%d", &op);
switch (op) {
case 1:
pilha_entrar();
break;
case 2:
pilha_sair();
break;
}
}
return(0);
}
//Adicionar um elemento no final da Pilha
void pilha_entrar(){
if (pilha.fim == tamanho) {
printf("\nA pilha est? cheia, imposs?vel empilhar um novo elemento!\n\n");
system("pause");
}
else {
printf("\nDigite o valor a ser empilhado: ");
scanf("%d", &pilha.dados[pilha.fim]);
pilha.fim++;
}
}
//Retirar o ?ltimo elemento da Pilha
void pilha_sair() {
if (pilha.ini == pilha.fim) {
printf("\nA pilha est? vazia, n?o h? nada para desempilhar!\n\n");
system("pause");
}
else {
pilha.dados[pilha.fim-1] = 0;
pilha.fim--;
}
}
//Mostrar o conte?do da Pilha
void pilha_mostrar() {
int i;
printf("[ ");
for (i = 0; i < tamanho; i++) {
printf("%d ", pilha.dados);
}
printf("]\n\n");
}
//Mostrar o menu de op??es
void menu_mostrar() {
printf("\nEscolha uma op??o:\n");
printf("1 - Empilhar\n");
printf("2 - Desempilhar\n");
printf("0 - Sair\n\n");
}
eu sei que tenho que inserir o seguinte codigo em algum lugar, mas não consigo entender aonde, peço ajuda pra poder entender o funcionamento da função, e se estiver faltando alguma coisa, me mostrem pra eu entender a logica.
function inverter(*fila, *pilha){
while(fila_vazia(fila)!=0){
empilhar(pilha,desenfileirar(fila)); }
while(pilha_vazia(pilha)!=0){
enfileirar(fila,desempilhar(pilha));
}
}
agradeço desde já a ajuda.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.