Você está aqui: C ::: Estruturas de Dados ::: Pilhas |
Como criar uma pilha em C usando um vetor (array) - Estruturas de Dados em CQuantidade de visualizações: 840 vezes |
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: Embora seja mais comum a criação de uma estrutura de dados do tipo Pilha de forma dinâmica (usando ponteiros e referências), nesta dica eu mostrarei como podemos criá-la em C usando um array, ou seja, um vetor. No exemplo eu usei inteiros, mas você pode modificar para o tipo de dados que você achar mais adequado. Veja o código completo para o programa C que cria uma pilha usando um vetor de ints. Veja que o tamanho do vetor é informado com um #define. Note também a lógica empregada na construção das funções empilhar(), desempilhar() e imprimir_pilha(): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <locale.h> // tamanho máximo da pilha #define TAM_MAX 5 // função usada para empilhar um novo valor na pilha void empilhar(int valor, int *topo, int pilha[]){ // a pilha já está cheia? if(*topo == (TAM_MAX - 1)){ printf("\nA pilha está cheia.\n"); } else{ *topo = *topo + 1; pilha[*topo] = valor; } } // função usada para desempilhar o elemento no topo da pilha int desempilhar(int *topo, int pilha[]){ int valor; // a pilha está vazia? if(*topo == -1){ printf("\nPilha vazia\n"); exit(1); } else{ valor = pilha[*topo]; *topo = *topo - 1; } return valor; } // função usada para imprimir a pilha void imprimir_pilha(int *topo, int pilha[]){ int i; if(*topo == -1){ printf("\nPilha vazia\n"); exit(1); } else { // vamos percorrer todos os elementos da pilha for (i = 0; i <= *topo; i++) { printf("Item[%d]: %d\n", (i + 1), pilha[i]); } } } int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português // vamos criar uma nova pilha int pilha[TAM_MAX]; // topo da pilha int topo = -1; int temp; // vamos empilhar 3 elementos empilhar(34, &topo, pilha); empilhar(52, &topo, pilha); empilhar(18, &topo, pilha); // vamos mostrar os elementos na pilha printf("Itens presentes na Pilha\n"); imprimir_pilha(&topo, pilha); // agora vamos remover e retornar dois elementos da pilha printf("\n"); temp = desempilhar(&topo, pilha); printf("O elemento desempilhado foi: %d\n", temp); temp = desempilhar(&topo, pilha); printf("O elemento desempilhado foi: %d\n", temp); // vamos mostrar os elementos na pilha novamente printf("\nItens presentes na Pilha\n"); imprimir_pilha(&topo, pilha); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Itens presentes na Pilha Item[1]: 34 Item[2]: 52 Item[3]: 18 O elemento desempilhado foi: 18 O elemento desempilhado foi: 52 Itens presentes na Pilha Item[1]: 34 |
Link para compartilhar na Internet ou com seus amigos: |
C ::: Dicas & Truques ::: Arquivos e Diretórios |
Como excluir arquivos em C usando a função remove()Quantidade de visualizações: 19140 vezes |
A função remove(), disponível no header stdio.h, pode ser usada para excluir arquivos. Veja sua assinatura:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int remove(const char *filename); Veja que esta função recebe o caminho e nome do arquivo a ser excluído e retorna um valor inteiro. Se o arquivo for excluído com sucesso, o valor 0 será retornado. Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // nome do arquivo a ser excluído char *arquivo = "c:\\testes.txt"; // vamos excluir if(remove(arquivo) == 0) printf("Arquivo foi excluido com sucesso."); else printf("Nao foi possivel excluir o arquivo."); printf("\n\n"); system("PAUSE"); return 0; } |
C ::: C para Engenharia ::: Física - Mecânica |
Como calcular a energia cinética de um corpo dado sua massa e sua velocidade usando a linguagem CQuantidade de visualizações: 1369 vezes |
Energia Cinética é a forma de energia relacionada aos corpos em movimento e é diretamente proporcional ao quadrado da velocidade do corpo. Sendo uma grandeza física escalar, a energia cinética possui como unidade de medida, de acordo com as unidades do SI (Sistema Internacional de Medidas), o joule. A energia cinética é a capacidade de algum corpo em movimento realizar trabalho, modificando o estado de movimento dos corpos ao seu redor ou deformando-os. Quanto maior é a velocidade e a massa do corpo, maior é a sua capacidade de realizar trabalho quando estiver em movimento. De forma análoga, podemos pensar que um corpo que apresenta uma grande energia cinética necessita de uma grande quantidade de energia para cessar o seu movimento. A fórmula para obtenção da Energia Cinética de um corpo, quando temos a sua massa e a sua velocidade é: \[ E_c = \frac{\text{m} \cdot v^2}{\text{2}} \] Onde: Ec ? energia cinética (em joule, J). m ? massa do corpo (em kg). v ? velocidade do corpo (em m/s). É comum, também, encontrarmos essa fórmula escrita da seguinte forma: \[ E_c = \frac{1}{2} \text{m} \cdot v^2 \] É importante observarmos que, caso um corpo se encontre em repouso, a energia cinética a ele associada é nula, ou seja, zero. Além disso, a energia cinética depende da velocidade desse corpo ao quadrado. Sendo assim, ao duplicarmos a velocidade de um corpo, sua energia cinética aumenta quatro vezes e, ao triplicá-la, a energia cinética desse corpo fica nove vezes maior. Vamos ver um exemplo agora? Observe o seguinte enunciado: 1) Um ciclista e sua bicicleta possuem uma massa total de 100kg, e uma velocidade de 54km/h. Calcule sua energia cinética. O exercício já nos dá a massa total em kg, mas precisamos converter km/h em m/s antes de realizar o cálculo da energia cinética. Fique atento(a). Veja o código C completo que efetua este cálculo e exibe a energia cinética resultante: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]){ // a massa total float massa = 100; // em kg // velocidade (em m/s) float velocidade = 54 / 3.6; // converti de km/h para m/s // agora calculamos a energia cinética float energia_cinetica = (massa * pow(velocidade, 2)) / 2; // mostramos o resultado printf("A energia cinética é: %fJ", energia_cinetica); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: A energia cinética é: 11250.000000J |
C ::: Dicas & Truques ::: Matemática e Estatística |
Como usar a função modf() da linguagem C para separar um valor de ponto flutuante em suas partes inteira e fracionáriaQuantidade de visualizações: 7754 vezes |
Em algumas situações precisamos obter as partes inteira e fracionária de um valor de ponto flutuante. Para isso podemos usar a função modf(). Veja sua assinatura:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- double modf(double x, double * intpart); O parâmetro x é o valor de ponto flutuante cujas partes queremos separar e intpart é uma variável do tipo double que receberá a parte inteira do valor. O retorno da função é o valor fracionário. Vamos ver um exemplo? Veja como podemos quebrar o valor 34,27 em suas partes inteira e fracionária: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { double valor = 34.27; // vamos separar o valor em suas partes inteira e fracionária double inteira = 0.0, fracionaria = 0.0; fracionaria = modf(valor, &inteira); // vamos exibir o resultado printf("Parte inteira: %f\n", inteira); printf("Parte fracionaria: %f\n", fracionaria); printf("\n\n"); system("pause"); return 0; } Ao executarmos este código teremos o seguinte resultado: Parte inteira: 34.000000 Parte fracionária: 0.270000 |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Dimensionamento de Redes de Distribuição de Água Qual a vazão em marcha e específica para uma cidade com 250.000 habitantes, área de 1.250 ha e consumo per capta de 275 L/hab.dia? Considere que existem 12 km de rede instalados. A) qm = 0,12 L/s.ha e qd = 1,15 L/s.m. B) qm = 1,15 L/s.ha e qd = 0,12 L/s.m. C) Q = 1,43 m3/s. D) qm = 1,15 L/s.m e qd = 0,12 L/s.ha. E) qm = 0,12 L/s.m e qd = 1,15 L/s.ha. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
O projeto de instalação hidrossanitária Um projeto de instalações hidrossanitárias é composto por redes hidráulicas (constituído de água fria e água quente), bem como redes sanitárias (esgoto), ventilação e rede pluvial. Para obras de grande porte, o projeto de proteção contra incêndio também está englobado no projeto de instalação hidrossanitária. Sobre as instalações hidrossanitárias em uma obra de pequeno porte, assinale a afirmativa correta: A) No projeto de esgotamento, a fossa séptica é aplicada para que as águas servidas convertam totalmente a matéria orgânica em gases. B) Alterações de percurso e de extensão não afetam o dimensionamento dos tubos de abastecimento de água, desde que não exista alteração de diâmetro. C) O shaft normalmente é acessível por painéis removíveis ou aberturas que permitem a verificação horizontal do abastecimento de todos os pavimentos do edifício em um só local. D) Um dos papéis do fecho hídrico do sifão sanitário é barrar a passagem de gases (odores) para o ambiente. E) É recomendável que se utilize o diâmetro mínimo de 100mm em toda a tubulação para evitar entupimentos. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Perfil em aço Alguns materiais fazem parte do processo de produção do aço ou até são resultantes de suas variações. Eles apresentam características que diferem entre si. Um desses materiais contém de 3 a 4% de carbono em sua composição. Assinale a alternativa que indica corretamente qual é esse material. A) Aço. B) Aço macio. C) Ferro fundido. D) Ferro forjado. E) Aço de médio carbono. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
O código de ética profissional: Concorrência Ao longo da história, os mercados foram se estruturando de diversas formas. Nesse contexto, em cada estrutura, a relação oferta e demanda assume comportamentos distintos em função das suas particularidades. Assim, podemos afirmar que, classicamente, o mercado, hoje, está estruturado de uma forma bem definida. Indique a alternativa que contém as possibilidades de estrutura de mercado. A) Oligopólio, concorrência monopolista, empresa concorrencial, concorrência perfeita. B) Monopólio, oligopólio, concorrência monopolista e concorrência interna. C) Monopsônio, concorrência monopolista, oligopólio e concorrência perfeita. D) Monopólio, oligopsônio, concorrência monopolista e concorrência perfeita. E) Monopólio, oligopólio, concorrência monopolista, concorrência perfeita. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
Qual dos rios, entre os listados abaixo, não está localizado no território brasileiro? A) Rio São Francisco. B) Rio Tocantins. C) Rio Orinoco. D) Rio Araguaia. E) Rio Paraíba do Sul. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades 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 |
Linguagens Mais Populares |
1º lugar: Java |