![]() |
|
||||
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Pilhas |
Crie uma pilha com as funcionalidades de empilhar, desempilhar, exibir a pilha, exibir o meio da pilha e excluir o nó no meio da pilha - Exercícios Resolvidos de CQuantidade de visualizações: 48 vezes |
Pergunta/Tarefa: A Pilha é uma estrutura de dados do tipo LIFO - Last-In, First-Out (Último a entrar, primeiro a sair). Neste tipo de estrutura, o último elemento a ser inserido é o primeiro a ser removido. Veja a imagem a seguir: ![]() Crie uma pilha usando uma lista encadeada simples com as funcionalidades de empilhar, desempilhar, exibir a pilha, exibir o meio da pilha e excluir o nó no meio da pilha. Seu código deverá usar alocação dinâmica de memória. O uso de vetores e matrizes na resolução não é permitida. Sua saída deverá ser parecida com: Informe o valor a ser empilhado: 7 O nó no meio da pilha é: 7 Informe o valor a ser empilhado: 4 O nó no meio da pilha é: 7 Informe o valor a ser empilhado: 2 O nó no meio da pilha é: 4 Informe o valor a ser empilhado: 9 O nó no meio da pilha é: 4 Informe o valor a ser empilhado: 5 O nó no meio da pilha é: 2 Os elementos da pilha são: 5 9 2 4 7 A pilha sem o elemento do meio: 5 9 4 7 Veja a resolução comentada deste exercício usando C: #include <stdio.h> #include <stdlib.h> // estrutura usada para representar os nós da pilha struct No { int valor; // valor do nó struct No* proximo; // aponta para o próximo nó struct No* anterior; // aponta para o nó anterior }; // estrutura que representa a pilha. Note os ponteiros para // o nó do topo, o nó do meio e um contador de nós struct Pilha { struct No* topo; struct No* meio; int contador; }; // função usada para empilhar um novo elemento na pilha void empilhar(struct Pilha* pilha, int valor) { // vamos reservar memória para um novo nó struct No* novo_no = (struct No*)malloc(sizeof(struct No)); // definimos o valor do novo nó novo_no->valor = valor; // o anterior do novo nó não aponta para ninguém novo_no->anterior = NULL; // o próximo do novo nó aponta para o topo da pilha novo_no->proximo = pilha->topo; // agora atualizamos o meio da pilha baseado no número de // nós que temos até agora if (pilha->contador == 0) { pilha->meio = novo_no; } else if (pilha->contador % 2 == 0) { pilha->meio = pilha->meio->anterior; } // atualizamos o ponteiro anterior do nó no topo if (pilha->topo != NULL) { pilha->topo->anterior = novo_no; } // finalmente atualizamos o ponteiro topo e // incrementamos o contador pilha->topo = novo_no; pilha->contador++; } // função usada para desempilhar um elemento da pilha int desempilhar(struct Pilha* pilha) { // vamos obter o nó que está no topo da pilha struct No* topo = pilha->topo; int valor = topo->valor; // ajustamos o topo da pilha para o nó seguinte pilha->topo = topo->proximo; // agora precisamos ajustar o ponteiro anterior if (pilha->topo != NULL) { pilha->topo->anterior = NULL; } // liberamos a memória do ponteiro que removemos free(topo); // atualizamos o ponteiro do meio baseado no // número de elementos if (pilha->contador % 2 == 1) { pilha->meio = pilha->meio->proximo; } // diminuimos o contador pilha->contador--; // e retornamos o valor do nó removido ...... |
![]() |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercício Resolvido de C - Um método recursivo que conta de 0 até 10Quantidade de visualizações: 825 vezes |
Pergunta/Tarefa: Escreva um método recursivo que conta e exibe os valores de 0 até 10. Seu método deverá possuir a seguinte assinatura: void contar_recursivamente(int n){ // sua implementação aqui } Sua saída deverá ser parecida com: 0 1 2 3 4 5 6 7 8 9 10 Veja a resolução comentada deste exercício usando C console: #include <stdio.h> #include <stdlib.h> // método recursivo que conta de 0 até 10; void contar_recursivamente(int n){ // vamos exibir o número atual printf("%d ", n); // devemos prosseguir com a recursividade? if(n < 10){ // incrementa o valor de n n++; contar_recursivamente(n); // e faz uma nova chamada recursiva ...... |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de C - Usando um laço for para percorrer os elementos de uma matriz e exibí-los na ordem original e invertidaQuantidade de visualizações: 10284 vezes |
Pergunta/Tarefa: Considere a seguinte matriz de inteiros: // uma matriz de inteiros contendo sete elementos int valores[] = {6, 9, 12, 34, 83, 20, 17}; Seu programa deverá exibir a seguinte saída: Ordem original: 6 9 12 34 83 20 17 Ordem inversa: 17 20 83 34 12 9 6 Veja abaixo a resolução completa para esta tarefa: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // uma matriz de inteiros contendo sete elementos int valores[] = {6, 9, 12, 34, 83, 20, 17}; int tam_matriz = 7; int i; // primeiro vamos exibir os valores da matriz na ordem original printf("Ordem original:\n"); for(i = 0; i < tam_matriz; i++){ ...... |
C ::: C para Engenharia ::: Física - Mecânica |
Como calcular a Energia Potencial Gravitacional de um corpo dado a sua massa e altura em CQuantidade de visualizações: 2085 vezes |
A Energia Potencial Gravitacional ou Energia Gravitacional é a energia potencial que um objeto massivo tem em relação a outro objeto massivo devido à gravidade. É a energia potencial associada ao campo gravitacional, que é parcialmente convertida em energia cinética quando os objetos caem uns contra os outros. A energia potencial gravitacional aumenta quando dois objetos são separados. A fórmula para obtenção da Energia Potencial Gravitacional de um corpo em relação à sua massa e distância do chão, ou seja, da superfície terrestre, é: \[ E_\text{pg} = \text{m} \cdot \text{g} \cdot \text{h} \] Onde: Epg ? energia potencial gravitacional (em joule, J). m ? massa do corpo (em kg). g ? aceleração da gravidade (m/s2). h ? altura do objeto em relação ao chão (em metros). Como podemos ver, a Energia Potencial Gravitacional está diretamente relacionada à distância do corpo em relação à superfície terrestre. Dessa forma, quanto mais distante da terra o objeto estiver, maior a sua energia gravitacional. Isso nós diz também que, um objeto de altura zero possui Energia Potencial Gravitacional nula. Vamos ver um exemplo agora? Observe o seguinte enunciado: 1) Uma pessoa levanta um tijolo com peso de 2 quilogramas à distância de 1,5 metros do chão. Qual é a Energia Potencial Gravitacional deste corpo? Como o exercício nos dá a massa do objeto em kg e a distância dele em relação ao chão já está em metros, tudo que temos a fazer é jogar na fórmula. Veja o código C completo para o cálculo: #include <stdio.h> #include <stdlib.h> // função principal do programa int main(int argc, char *argv[]){ // gravidade terrestre em m/s2 float gravidade = 9.80665; // massa do corpo float massa = 2; // em kg // altura do corpo em relação ao chão float altura = 1.5; // em metros ...... Ao executar este código C nós teremos o seguinte resultado: A Energia Potencial Gravitacional é: 29.419950J |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |