Opa Alguém poderia me ajudar, já estou a um bom tempo tentando resolver mas consigo de maneira nenhuma, alguém DA UMA LUZ.
Preencher os espaços em branco conforme indicado no comentário (// ... )para o programa principal e um função para resolver o seguinte problema:
Dada um a pilha já com 4 elementos classificados em ordem crescente à partir do TOPO, completar as instruções do programa obter os seguintes resultados:
1. Listar a pilha original, como ela está;
2. Listar os elementos de um dado vetor de 4 elementos não classificados;
3. Ler o vetor e empilhar os seus quatro elementos na pilha, sendo que cada elemento deve ser colocado na pilha de maneira a não alterar a ordem de classificação crescente.
4. Usar uma função à parte, para incluir cada elemento do vetor, com as seguintes funcionalidades:
a. Utilizar uma pilha auxiliar para armazenar os elementos da pilha original para manter a classificação.
b. Para cada elemento do vetor colocá-lo na ordem correta na pilha.
Pergunta
Eurico Pelepka
Opa Alguém poderia me ajudar, já estou a um bom tempo tentando resolver mas consigo de maneira nenhuma, alguém DA UMA LUZ.
Preencher os espaços em branco conforme indicado no comentário (// ... )para o programa principal e um função para resolver o seguinte problema:
Dada um a pilha já com 4 elementos classificados em ordem crescente à partir do TOPO, completar as instruções do programa obter os seguintes resultados:
1. Listar a pilha original, como ela está;
2. Listar os elementos de um dado vetor de 4 elementos não classificados;
3. Ler o vetor e empilhar os seus quatro elementos na pilha, sendo que cada elemento deve ser colocado na pilha de maneira a não alterar a ordem de classificação crescente.
4. Usar uma função à parte, para incluir cada elemento do vetor, com as seguintes funcionalidades:
a. Utilizar uma pilha auxiliar para armazenar os elementos da pilha original para manter a classificação.
b. Para cada elemento do vetor colocá-lo na ordem correta na pilha.
c. Restaurar a pilha original no final da função.
5. Listar a pilha atualizada.
OBS: O resultado deve sair neste formato:
Pilha Original.
Pilha[9] = 0
Pilha[8] = 0
Pilha[7] = 0
Pilha[6] = 0
Pilha[5] = 0
Pilha[4] = 0
Pilha[3] = 5 <-- TOPO
Pilha[2] = 7
Pilha[1] = 12
Pilha[0] = 15
Vetor para empilhar.
3 13 8 2
Atualizando a Pilha ...
Pilha Atualizada.
Pilha[9] = 0
Pilha[8] = 0
Pilha[7] = 2 <-- TOPO
Pilha[6] = 3
Pilha[5] = 5
Pilha[4] = 7
Pilha[3] = 8
Pilha[2] = 12
Pilha[1] = 13
Pilha[0] = 15
Fim do Programa.
Programa Principal
#include <stdio.h>
#define TAM 10
void empilharNaOrdem(int [], int*, int);
int main() {
int pilha[TAM] = {15, 12, 7, 5, 0, 0, 0, 0, 0, 0};
int vetor[4] = {3, 13, 8, 2};
int topo = __________, i = 0; // ... valor do topo
/* Listar a pilha original*/
printf("Pilha Original.\n");
for (i = _______; i ______; i____) {// ...elementos do comando for para ler pilha
printf("Pilha[_____] = _____ ", _____, _________); // ...para imprimir a pilha
if (______________) // ... identificação do topo
printf("<-- TOPO\n");
else
printf("\n");
}
//Listar vetor
printf("\nVetor para empilhar.\n");
for (i = _____; i______; i____) { // ... elementos do comando for para ler o vetor
printf(" _________ ", _____________); // ... imprimir o vetor
}
/* Empilhar 4 numeros em ordem crescente a partir do topo */
printf("\n\nAtualizando a Pilha ...\n\n");
for (i = ____; i _____; i____) { // ... elementos do comando for para ler o vetor
empilharNaOrdem(_______, _________, _________); // ...parâmetros da chamada da
// ...função
}
/* Listar a pilha atualizada*/
printf("\nPilha Atualizada.\n");
for (i = ________; i _______; i_____) { // ... elementos do comando for para ler
// ... a pilha atualizada
printf("Pilha[______] = _______ ", ______, _______); // ... para imprimir a
// ... a pilha
if (____________) // ... identificação do topo
printf("<-- TOPO\n");
else
printf("\n");
}
printf("\nFim do Programa.\n");
getchar();
return 0;
}
Função para empilhar os elementos do vetor em ordem crescente.
void empilharNaOrdem(int pilha[], int* topo, int n) {
int pilhaAux[TAM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int topoAux = ____________; // ... valor do topoAux
while (*topo ________ ________) {
if(n <= ____________) { // ... testar elemento do vetor com o topo da pilha
*topo = ________________; // ... atualizar o topo da pilha
pilha[__________] = _________; // ... colocar o elemento do vetor na
// ...pilha original
___________; // ... sair do while
}
else {
topoAux__________; //... atualizar o topo da pilha auxiliar
pilhaAux[_________] = pilha[________]; // ... colocar elemento da
pilha[______] = _______; // ... pilha na pilha auxiliar
*topo = *topo ________; // ... atualizar o topo da pilha
}
}
if (*topo ___________) { // ... verificar se pilha original ficou vazia
*topo = ____________; // ... atualizar o topo da pilha
pilha[____________] = _______; // ... colocar elemento do vetor na pilha
}
if (topoAux ___________) // ... verificar se a pilha auxiliar está vazia
return;
while (topoAux _________) { // ... testar se há elementos na pilha auxiliar
*topo = ________________; // ... atualizar o topo da pilha original
pilha[_______] = pilhaAux[___________]; // ... colocar elemento da pilha
// ... auxiliar na pilha original
topoAux__________; // ... atualizar o topo da pilha auxiliar
}
return;
}
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.