Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Eurico Pelepka

C Exercicio de C ( PILHA)

Recommended Posts

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;
}

                                                                                                                                                                                                 

 

 

 

Editado por Simon Viegas
Antes de postar um código, favor pressionar o botão <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×