Ir ao conteúdo
  • Cadastre-se

C Exercicio de C ( PILHA)


Eurico Pelepka

Posts recomendados

Opa Alguém poderia me ajudar, já estou a um bom tempo tentando resolver mas consigo de maneira nenhuma, ALGUEM 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

  • Membro VIP

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

Link para o comentário
Compartilhar em outros sites

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