Você está aqui: C ::: Dicas & Truques ::: Data e Hora

Como usar a função mktime() para construir datas e horas em C

Quantidade de visualizações: 4180 vezes
A função mktime(), do header <time.h> é usada quando queremos construir novas datas e horas em C. Esta função recebe um ponteiro para uma estrutura tm e retorna um valor do tipo time_t (ou -1 em caso de erro). Veja sua assinatura:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

time_t mktime(struct tm *timeptr);

A função mktime() interpreta o conteúdo da estrutura tm apontada pelo parâmetro timeptr como uma hora de calendário expressa na hora local. Esta hora de calendário é usada para ajustar corretamente os valores dos membros da estrutura tm e retorná-la como um objeto do tipo time_t.

Os valores originais dos membros tm_wday e tm_yday do parâmetro timeptr são ignorados, e as faixas de valores para o restante de seus membros não são mais restritos ao seus valores normais (como a restrição de valores de 1 a 31 para o membro tm_mday).

O objeto apontado por timeptr é modificado, ajustando tm_wday e tm_yday para seus valores apropriados e modificando os demais membros, se necessário, para acomodar as faixas normais de valores.

Veja um exemplo de como podemos contruir a data 23/04/2001:

----------------------------------------------------------------------
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 <time.h>

int main(int argc, char *argv[]){
  time_t data_hora_segundos; // guarda os segundos deste 01/01/1970
  struct tm *timeinfo; // declara uma estrutura tm
  time(&data_hora_segundos); // preenche a variável data_hora_segundos
  // preenche a estrutura timeinfo
  timeinfo = localtime(&data_hora_segundos);

  // data que queremos construir
  int dia = 23;
  int mes = 4;
  int ano = 2001;

  // vamos modificar a estrutura timeinfo
  timeinfo->tm_year = ano - 1900;
  timeinfo->tm_mon = mes - 1;
  timeinfo->tm_mday = dia;

  // vamos atualizar a estrutura timeinfo
  mktime(timeinfo);

  // e agora exibir o resultado
  printf("Data construída: %s\n\n", asctime(timeinfo));

  system("PAUSE");
  return 0;
}

Ao executar este código teremos uma saída parecida com:

Data construída: Mon Apr 23 09:40:59 2001

Link para compartilhar na Internet ou com seus amigos:

C ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como testar se uma matriz é uma matriz identidade usando C

Quantidade de visualizações: 1691 vezes
Seja M uma matriz quadrada de ordem n. A matriz M é chamada de Matriz Identidade de ordem n (indicada por In) quando os elementos da diagonal principal são todos iguais a 1 e os elementos restantes são iguais a zero.

Para melhor entendimento, veja a imagem de uma matriz identidade de ordem 3, ou seja, três linhas e três colunas:



Veja um código C completo no qual nós declaramos uma matriz quadrada de ordem 3, pedimos para o usuário informar os valores de seus elementos e no final informamos se a matriz é uma matriz identidade ou nã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 <locale.h>

int main(int argc, char *argv[]){
  setlocale(LC_ALL,""); // para acentos do português

  int n = 3; // ordem da matriz quadrada
  int matriz[n][n]; // matriz quadrada
  int i, j, linha, coluna;
  int identidade = 1;

  // vamos pedir para o usuário informar os elementos da matriz
  for (i = 0; i < n; i++){
    for (j = 0; j < n; j++) {
      printf("Elemento na linha %d e coluna %d: ", (i + 1), (j + 1));
      scanf("%d", &matriz[i][j]);
    }
  }
    
  // agora verificamos se a matriz é uma matriz identidade
  for(linha = 0; linha < n; linha++){
    for(coluna = 0; coluna < n; coluna++){
      if(matriz[linha][coluna] != 1 && matriz[coluna][linha] != 0){
    	identidade = 0;
    	break;
      }
    }
  }
    
  // agora mostramos a matriz lida
  printf("\n");
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      printf("%d ", matriz[i][j]);
    }
    printf("\n");
  }

  if (identidade){
    printf("\nA matriz informada é uma matriz identidade.");
  }
  else{
    printf("\nA matriz informada não é uma matriz identidade.");
  }
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}

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

Elemento na linha 1 e coluna 1: 1
Elemento na linha 1 e coluna 2: 0
Elemento na linha 1 e coluna 3: 0
Elemento na linha 2 e coluna 1: 0
Elemento na linha 2 e coluna 2: 1
Elemento na linha 2 e coluna 3: 0
Elemento na linha 3 e coluna 1: 0
Elemento na linha 3 e coluna 2: 0
Elemento na linha 3 e coluna 3: 1

1 0 0 
0 1 0 
0 0 1 

A matriz informada é uma matriz identidade.



C ::: Dicas & Truques ::: Ponteiros, Referências e Memória

Como usar um ponteiro para acessar e alterar o valor de mais de uma variável do tipo int usando a linguagem C

Quantidade de visualizações: 9986 vezes
Esta dica mostra a você como podemos usar apenas um ponteiro para acessar e manipular os valores de três variáveis do tipo int. Veja o uso do símbolo "&" para acessar o endereço de uma variável e "*" (operador de indireção) para acessar o valor da variável apontada pelo ponteiro.

Observe o código completo para o 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[])
{
  // declara e inicializa três variáveis
  int a = 23;
  int b = 40;
  int c = 3;
 
  // exibe seus valores
  printf("a = %d, b = %d, c = %d\n\n", a, b, c);
 
  // declara um ponteiro para uma variável do tipo int
  int *p;
 
  // aponta para a variável "a" e altera seu valor
  p = &a;
  *p = 12;
 
  // aponta para a variável "b" e altera seu valor
  p = &b;
  *p = 695;
 
  // aponta para a variável "c" e altera seu valor
  p = &c;
  *p = 90;
 
  // exibe os novos valores das variáveis
  printf("a = %d, b = %d, c = %d\n\n", a, b, c);
 
  system("PAUSE");
  return 0;
}

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

a = 23, b = 40, c = 3
a = 12, b = 695, c = 90
Pressione qualquer tecla para continuar...


C ::: Desafios e Lista de Exercícios Resolvidos ::: Operadores de Manipulação de Bits (Bitwise Operators)

Exercícios Resolvidos de C - Como converter de decimal para binário usando os operadores de bits em C

Quantidade de visualizações: 703 vezes
Pergunta/Tarefa:

Escreva um programa C para pede para o usuário informar um número decimal e faça a conversão para binário usando os operadores de bits.

Sua saída deverá ser parecida com:

Informe um número decimal: 9
O número binário é: 00000000000000000000000000001001
Resposta/Solução:

Veja a resolução completa para o exercício em C, comentada linha a linha:

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

// vamos definir o tamanho do vetor para guardar
// os dígitos do número binário
#define TAM_INT sizeof(int) * 8

int main(int argc, char *argv[]){
  // variáveis para ajudar a resolver o problema
  int decimal, indice, i;
  
  // vetor para guardar o número binário
  int binario[TAM_INT];

  setlocale(LC_ALL,""); // para acentos do português 

  // vamos pedir para o usuário informar um decimal inteiro
  printf("Informe um número decimal: ");
  scanf("%d", &decimal);

  // ajustamos índice para o último elemento do vetor
  indice = TAM_INT - 1;

  // enquanto índice for maior ou igual a 0
  while(indice >= 0){
    // vamos guardar o bit menos significativo LSB
    binario[indice] = decimal & 1;
    
    // diminuímos o índice
    indice--;

    // desloca bits para a direita uma posição
    decimal = decimal >> 1;
  }

  // agora vamos exibir o número binário
  printf("O número binário é: ");
  for(i = 0; i < TAM_INT; i++){
    printf("%d", binario[i]);
  }
 
  printf("\n\n");
  system("PAUSE");	
  return 0;
}



Mais Desafios de Programação e 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á 25 usuários muito felizes estudando em nosso site.