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: 900 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 ::: Matemática e Estatística |
Como calcular juros compostos e montante usando CQuantidade de visualizações: 11867 vezes |
O regime de juros compostos é o mais comum no sistema financeiro e portanto, o mais útil para cálculos de problemas do dia-a-dia. Os juros gerados a cada período são incorporados ao principal para o cálculo dos juros do período seguinte. Chamamos de capitalização o momento em que os juros são incorporados ao principal. Após três meses de capitalização, temos: 1º mês: M = P .(1 + i) 2º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) 3º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) x (1 + i) Simplificando, obtemos a fórmula: M = P . (1 + i)^n Importante: a taxa i tem que ser expressa na mesma medida de tempo de n, ou seja, taxa de juros ao mês para n meses. Para calcularmos apenas os juros basta diminuir o principal do montante ao final do período: J = M - P Vejamos um exemplo: Considerando que uma pessoa empresta a outra a quantia de R$ 2.000,00, a juros compostos, pelo prazo de 3 meses, à taxa de 3% ao mês. Quanto deverá ser pago de juros? Veja o código C para a resolução: ---------------------------------------------------------------------- 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[]) { float principal = 2000.00; float taxa = 0.03; // 3% int meses = 3; float montante = principal * pow((1 + taxa), meses); float juros = montante - principal; printf("O total de juros a ser pago é: %f\n", juros); printf("O montante a ser pago é: %f", montante); printf("\n\n"); system("pause"); return 0; } Um outra aplicação interessante é mostrar mês a mês a evolução dos juros. Veja o código a seguir: ---------------------------------------------------------------------- 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[]) { float principal = 2000.00; float taxa = 0.03; // 3% int meses = 3; float anterior = 0.0; float montante; float juros; for(int i = 1; i <= meses; i++){ montante = principal * pow((1 + taxa), i); juros = montante - principal - anterior; anterior += juros; printf("Mês: %d - Montante: %f - Juros %f\n", i, montante, juros); } printf("\n\n"); system("pause"); return 0; } |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Apostila de C para iniciantes - Como criar um laço for infinito na linguagem CQuantidade de visualizações: 10100 vezes |
A linguagem C nos permite criar laços for infinitos. Para isso, só precisamos omitir as partes de inicialização, teste e incremento/decremento. 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[]) { int i = 1; for(;;){ printf("%d ", i); i++; if(i > 10) break; // sai do laço } printf("\n\n"); system("PAUSE"); return 0; } Veja que só usamos for(;;). Tenha o cuidado de fornecer uma forma de parar o laço. Do contrário seu programa executará até travar. |
C ::: C para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a transposta de uma matriz em C - Curso de C para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 1001 vezes |
A matriz transposta de uma matriz A é a matriz AT. Tal matriz é obtida quando copiamos os elementos da matriz A para uma outra matriz (ou para ela mesma) e trocamos de posição as linhas e colunas. Dessa forma, a primeira linha da matriz A se transforma na primeira coluna da matriz transposta, a segunda linha da matriz A se transforma na segunda coluna da matriz transposta e assim por diante. Em termos de notação, podemos dizer, de forma algébrica, que: ATji = Aij Onde i representa as linhas e j representa as colunas, tanto na matriz original quanto na matriz transposta. É importante estar atento à quantidade de linhas e colunas na matriz original e na matriz transposta equivalente. Assim, se a matriz original for 3x2, a matriz transposta será 2x3. Antes de vermos o código C, dê uma olhada na seguinte matriz de duas linhas e três colunas: \[A = \left[\begin{matrix} 3 & 5 & 7 \\ 1 & 2 & 9 \end{matrix}\right] \] Sua matriz transposta correspondente é: \[A^T = \left[\begin{matrix} 3 & 1 \\ 5 & 2 \\ 7 & 9 \end{matrix}\right] \] E agora veja o código C que declara uma matriz 2x3 e gera a matriz transposta 3x2: ---------------------------------------------------------------------- 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> int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português // vamos declarar e construir uma matrix // 2x3 (duas linhas e três colunas int matriz[2][3] = {{3, 5, 7}, {1, 2, 9}}; int i, j; // vamos exibir os valores da matriz printf("Elementos da matriz:\n"); for(i = 0; i < 2; i++){ for(j = 0; j < 3; j++){ printf("%5d ", matriz[i][j]); } printf("\n"); } // como temos uma matriz 2x3, a transposta deverá ser // 3x2, ou seja, três linhas e duas colunas int linhas = 3; // linhas da matriz original int colunas = 2; // colunas da matriz original int transposta[linhas][colunas]; // e agora vamos preencher a matriz transposta for(i = 0; i < 2; i++){ for(j = 0; j < 3; j++){ transposta[j][i] = matriz[i][j]; } } // vamos exibir os valores da matriz transposta printf("Elementos da matriz transposta:\n"); for(i = 0; i < 3; i++){ for(j = 0; j < 2; j++){ printf("%5d ", transposta[i][j]); } printf("\n"); } printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Elementos da matriz: 3 5 7 1 2 9 Elementos da matriz transposta: 3 1 5 2 7 9 |
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 |