Você está aqui: C ::: Estruturas de Dados ::: Filas

Como criar uma fila em C usando um vetor de ints - Fila em C usando um menu de opções switch...case

Quantidade de visualizações: 566 vezes
Como sabemos, a Fila é uma estrutura de dados do tipo FIFO - First-In, First-Out (Primeiro a entrar, primeiro a sair). Neste tipo de estrutura, o primeiro elemento a ser inserido é o primeiro a ser removido. Funciona exatamente igual a fila de um banco, fila para comprar ingressos, fila para pagar no caixa da lanchonete, etc.

Nesta dica mostrarei como implementar um fila na linguagem C usando um vetor de inteiros, ou seja, um array. Para facilitar o seu entendimento eu coloquei um menu de opções, feito usando a estrutura de controle switch...case.

Veja que coloquei a maioria das funções presentes em uma fila, a saber, exibir_fila(), enfileirar(), desenfileirar(), fila_cheia(), fila_vazia(), retornar_inicio() e retornar_fim().

Veja o código C completo:

----------------------------------------------------------------------
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 fila
#define TAM_MAX 10

// vamos precisar de algumas variáveis globais
int fila[TAM_MAX]; // vetor de inteiros que servirá como fila
unsigned int tamanho = 0; // tamanho atual da fila
unsigned int inicio = 0; // índice que aponta para o início da fila
unsigned int fim = TAM_MAX - 1; // índice que aponta para o final da fila

// protótipo das funções (sim, alguns compiladores exigem isso)
void exibir_fila();
void enfileirar(int valor);
int desenfileirar();
int fila_cheia();
int fila_vazia();
int retornar_inicio();
int retornar_fim();

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do exercício
  int opcao, valor, continuar = 1;
	
  setlocale(LC_ALL,""); // para acentos do português
  
  // laço infinito para o menu de opções
  while (continuar){
    printf("--------------------------------------\n");
    printf("         SIMULAÇÃO DE FILA EM C       \n");
    printf("--------------------------------------\n");
    printf("1. Enfileirar\n");
    printf("2. Desenfileirar\n");
    printf("3. Tamanho da Fila\n");
    printf("4. Retornar Início da Fila\n");
    printf("5. Retornar Final da Fila\n");
    printf("6. Sair do Programa\n");
    printf("--------------------------------------\n");
    printf("Sua opção: ");

    // lê a opção informada pelo usuário
    scanf("%d", &opcao);
    
    // trata as opções usando um menu switch
    switch(opcao){
      case 1: // enfileira um novo valor na fila
        printf("\nInforme o valor a ser enfileirado: ");
        scanf("%d", &valor);

        // enfileira o valor
	if(!fila_cheia()){
	  enfileirar(valor);
          printf("\nValor enfileirado com sucesso.\n\n");
          exibir_fila();
        }
	else{
	  printf("\nA fila está cheia.\n\n");
	}
      
	break;
			  
      case 2: // desenfileira um valor da fila
        if(!fila_vazia()){
	  valor = desenfileirar();
          printf("\nValor desenfileirado: %d\n\n", valor);
          exibir_fila();
        }
	else{
	  printf("\nA fila está vazia.\n\n");
	}
      
	break;

      case 3: // retorna o tamanho da fila
        printf("\nA fila possui %d elementos.\n\n", tamanho);
      
	break;
				
      case 4: // retorna o elemento no início da fila
        if(!fila_vazia()){
	  valor = retornar_inicio();
          printf("\nValor no início da fila: %d\n\n", valor);
        }
	else{
	  printf("\nA fila está vazia.\n\n");
	}
      
	break;
				
      case 5: // retorna o elemento no final da fila
        if(!fila_vazia()){
	  valor = retornar_fim();
          printf("\nValor no final da fila: %d\n\n", valor);
        }
	else{
	  printf("\nA fila está vazia.\n\n");
	}
      
	break;
				
      case 6: // sai do menu de opções
        printf("\nObrigado por usar o programa.\n");
        continuar = 0;
      
	break;		  
    }
  }
	
  printf("\n\n");
  system("PAUSE");	
  return 0;
}

// função que exibe o conteúdo da fila
void exibir_fila() {
  int i;
	
  // a fila está vazia
  if(fila_vazia()){
    printf("\nA fila está vazia.\n\n");
  } 
  else {
    printf("Conteúdo da fila:\n\n");
    
    for (i = inicio; i <= fim; i++) {
      printf("Item[%d]: %d\n", (i + 1), fila[i]);
    }
    
    printf("\n");
  }
}

// função que testa se a fila está cheia
int fila_cheia(){
  return (tamanho == TAM_MAX);
}

// função que testa se a fila está vazia
int fila_vazia(){
  return (tamanho == 0);
}

// retorna o elemento no início da fila
int retornar_inicio(){
  return fila[inicio];
}

// retorna o elemento no fim da fila
int retornar_fim(){
  return fila[fim];
}

// função que permite enfileirar um novo valor na fila
void enfileirar(int valor){
  // assegura que o final da fila não ultrapasse os limites
  // do vetor
  fim = (fim + 1) % TAM_MAX;

  // aumentamos o tamanho da fila
  tamanho++;

  // enfileiramos o novo valor
  fila[fim] = valor;
}

int desenfileirar(){
  int valor;

  // desenfileira um valor da fila
  valor = fila[inicio];

  // vamos evitar que o início da fila não ultrapassa
  // os limites do vetor
  inicio = (inicio + 1) % TAM_MAX;

  // reduzimos o tamanho da fila
  tamanho--;

  // e retornamos o valor desenfileirado
  return valor;
}

Ao executar este código C nós teremos o seguinte resultado:

--------------------------------------
         SIMULAÇÃO DE FILA EM C
--------------------------------------
1. Enfileirar
2. Desenfileirar
3. Tamanho da Fila
4. Retornar Início da Fila
5. Retornar Final da Fila
6. Sair do Programa
--------------------------------------
Sua opção: 1

Informe o valor a ser enfileirado: 39

Valor enfileirado com sucesso.

Conteúdo da fila:

Item[1]: 56
Item[2]: 39
...


Link para compartilhar na Internet ou com seus amigos:

C ::: Dicas & Truques ::: Strings e Caracteres

Como concatenar strings em C usando a função strcat() - Aprenda a programar na linguagem C

Quantidade de visualizações: 42181 vezes
Concatenar strings é a operação de anexar uma string a outra. Em C, isso é feito com o auxílio da função strcat(), disponível no header string.h. Esta função recebe a string de destino, a string de origem, anexa a string de destino no final da string de origem e retorna um ponteiro para o resultado final. Veja um exemplo no qual usamos esta função para concatenar três strings:

----------------------------------------------------------------------
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[])
{
  char frase1[100] = "Gosto";
  strcat(frase1, " muito de ");
  strcat(frase1, " programar em C");

  // exibe o resultado
  printf("%s\n\n", frase1);

  system("PAUSE");
  return 0;
}


Veja que a string de destino deve ser declarada com um tamanho suficiente para acomodar as strings que serão anexadas a ela. Veja agora um exemplo que usa o ponteiro retornado pela função strcat() para inicializar um ponteiro do tipo char:

----------------------------------------------------------------------
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[])
{
  // declara e inicializa duas strings
  char frase1[100] = "Gosto muito de ";
  char frase2[15] = "programar em C";
  char *res = strcat(frase1, frase2);

  // exibe o resultado
  printf("%s\n\n", res);

  system("PAUSE");
  return 0;
}



C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cateto adjascente dadas as medidas da hipotenusa e do cateto oposto em C

Quantidade de visualizações: 2289 vezes
Nesta dica mostrarei como podemos tirar proveito do Teorema de Pitágoras para obter a medida do cateto adjascente quando temos as medidas da hipotenusa e do cateto oposto. Este teorema diz que "o quadrado da hipotenusa é igual à soma dos quadrados dos catetos", o que torna a nossa tarefa, na linguagem C, muito fácil.

Comece observando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. A medida da hipotenusa é, sem arredondamentos, 36.056 metros.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras):

\[c^2 = a^2 + b^2\]

Tudo que temos que fazer é mudar a fórmula para:

\[b^2 = c^2 - a^2\]

Veja que agora o quadrado do cateto adjascente é igual ao quadrado da hipotenusa menos o quadrado do cateto oposto. Não se esqueça de que a hipotenusa é o maior lado do triângulo retângulo.

Veja agora como esse cálculo é feito em linguagem C:

----------------------------------------------------------------------
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 c = 36.056; // medida da hipotenusa
  float a = 20; // medida do cateto oposto
  
  // agora vamos calcular a medida da cateto adjascente
  float b = sqrt(pow(c, 2) - pow(a, 2));
 
  // e mostramos o resultado
  printf("A medida do cateto adjascente é: %f", b);
 
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

A medida do cateto adjascente é: 30.000586

Como podemos ver, o resultado retornado com o código C confere com os valores da imagem apresentada.


C ::: Dicas & Truques ::: Matemática e Estatística

Como calcular MDC em C

Quantidade de visualizações: 23711 vezes
Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada:

Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b.

O trecho de código abaixo mostra como calcular o MDC de dois números informados:

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

// função que recebe dois inteiros e retorna
// o Máximo Divisor Comum dos dois 
int MDC(int a, int b){
  int resto;
 
  while(b != 0){
    resto = a % b;
    a = b;
    b = resto;
  }
 
  return a;
} 
 
int main(int argc, char *argv[]){
  int x, y;
	
  setlocale(LC_ALL,""); // para acentos do português
	
  printf("Este programa permite calcular o MDC\n");
  printf("Informe o primeiro número: ");
  scanf("%d", &x);
  printf("Informe o segundo número: ");
  scanf("%d", &y);
 
  printf("O Máximo Divisor Comum de %d e %d é %d",
    x, y, MDC(x, y));
  
  printf("\n\n");
  system("pause");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

Este programa permite calcular o MDC
Informe o primeiro número: 12
Informe o segundo número: 9
O Máximo Divisor Comum de 12 e 9 é 3


Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 81 usuários muito felizes estudando em nosso site.