Ir para conteúdo
Fórum Script Brasil
  • 0

Exercicio de C ( PILHA)


Eurico Pelepka

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...