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: 6517 vezes |
A função mktime(), do header <ctime> é 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 <cstdlib> #include <iostream> using namespace std; 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 cout << "Data construída: " << asctime(timeinfo) << "\n\n"; system("PAUSE"); return EXIT_SUCCESS; } 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++ ::: Fundamentos da Linguagem ::: Tipos de Dados |
Como usar true e false em C e C++Quantidade de visualizações: 14316 vezes |
Em praticamente todas as linguagens de programação nós encontramos expressões condicionais que definem o fluxo de execução. Expressões condicionais são aquelas que, quando avaliadas, resultam em um valor true (verdadeiro) ou false (falso). Muitas linguagens de programação possuem um tipo booleano que armazena os valores true ou false. Enquanto o C++ possui o tipo bool, o C possui uma forma bem interessante de definir true ou false. Em C, um valor true é qualquer valor diferente de 0, incluindo numeros negativos. Veja: ---------------------------------------------------------------------- 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 pode = 1; // verdadeiro int nao_pode = 0; // falso if(pode) printf("Teste resultou verdadeiro\n\n"); if(!nao_pode) printf("Teste resultou verdadeiro\n\n"); system("PAUSE"); return 0; } Lembre-se então. False em C é o valor zero. Qualquer outro valor é true. Embora C++ já possua o tipo bool, é possível usar a abordagem do zero para false e qualquer outro valor para true em C++ também. Você verá muito código legado usando este artifício. Quer ver algo interessante agora? Execute o seguinte código C++: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]){ bool pode = true; bool nao_pode = false; cout << pode << "\n"; cout << nao_pode << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Nos compiladores que obedecem o C++ padrão você verá os valores 1 e 0 serem impressos. |
C++ ::: Fundamentos da Linguagem ::: Tipos de Dados |
Como usar o tipo de dados int da linguagem C++Quantidade de visualizações: 10609 vezes |
O tipo de dados int da linguagem C++ é usado quando queremos representar números inteiros, ou seja, sem partes fracionárias. Veja um trecho de código demonstrando seu uso (note que estes estudos foram feitos no Windows XP - 32 bits - usando Dev-C++):---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; int main(int argc, char *argv[]){ // declara uma variável do tipo int int idade = 45; cout << "A idade é: " << idade << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } A capacidade de armazenamento do tipo int depende da arquitetura na qual o programa está sendo executado. Uma forma muito comum de descobrir esta capacidade é usar os símbolos INT_MIN e INT_MAX, definidos no header climits (limits.h). Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; int main(int argc, char *argv[]){ cout << "Valor mínimo: " << INT_MIN << "\n"; cout << "Valor máximo: " << INT_MAX << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este programa você terá um resultado parecido com: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Valor mínimo: -2147483648 Valor máximo: 2147483647 Veja que o tipo inteiro aceita valores positivos e negativos. Tudo que você tem a fazer é tomar todo o cuidado para que os valores atribuidos a variáveis deste tipo não ultrapassem a faixa permitida. Veja um trecho de código que provoca o que chamamos de transbordamento (overflow): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; int main(int argc, char *argv[]){ int soma = INT_MAX + 2; cout << "Resultado: " << soma << "\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Este programa exibirá o seguinte resultado: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Resultado: -2147483647 Note que este não é o resultado esperado, visto que INT_MAX + 2 deveria retornar: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 2147483647 + 2 = 2147483649 Porém, como o valor máximo que pode ser armazenado em um int é 2147483647, o procedimento adotado pelo compilador foi tornar o número negativo e subtrair 1. É claro que, se você testar este código em arquiteturas diferentes o resultado poderá ser diferente do exemplificado aqui. Em termos de bytes, é comum o tipo int ser armazenado em 4 bytes, o que resulta em 32 bits (um byte é formado por 8 bits, lembra?). Veja um trecho de código que mostra como usar o operador sizeof() para determinar a quantidade de bytes necessários para armazenar um variável do tipo int: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; int main(int argc, char *argv[]){ cout << "Tamanho de um int: " << sizeof(int) << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } O resultado da execução deste código será algo como: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Tamanho de um int: 4 bytes |
C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios |
Como obter o diretório atual usando a função GetCurrentDirectory() da API do Windows - C++ e WinAPIQuantidade de visualizações: 9450 vezes |
Nesta dica mostrarei como chamar, a partir de um programa C++, a função GetCurrentDirectory() da API do Windows com o propósito de obter o diretório atual, ou seja, o diretório de trabalho da nossa aplicação. Esta função é declarada no header winbase.h (que vem junto quando fazemos include do header windows.h). Veja o exemplo completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <cstdlib> #include <iostream> #include <windows.h> using namespace std; int main(int argc, char *argv[]) { // buffer que receberá o nome do diretório TCHAR szDirAtual[MAX_PATH]; // chama a função GetCurrentDirectory GetCurrentDirectory(MAX_PATH, szDirAtual); // Exibe o resultado cout << "O diretório atual é " << szDirAtual << "\n\n"; system("PAUSE"); return EXIT_SUCCESS; } Ao executar este código nós teremos o seguinte resultado: O diretório atual é C:\estudos_c++ |
Vamos testar seus conhecimentos em Hidrologia |
Qual das alternativas abaixo apresenta o conceito correto de bacia hidrográfica? A) Unidade espacial que comporta a rede de drenagem delimitada pelo relevo. B) Território marcado apenas pela presença de córregos de regime intermitente. C) Classificação geológica formada pelo conjunto de rios com a mesma nascente. D) Categoria de análise que é fruto da diminuição da rede de drenagem regional. E) Categorização hidráulica dos rios que possuem a mesma vazão na jusante. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Topografia |
Rumo e azimute Prova de Engenharia Civil Prefeitura de Jarú O azimute correspondente ao rumo 32º 20' 30'' é: A) 212º 20' 30'' B) 147º 39' 30'' C) 327º 39' 30'' D) 302º 20' 30'' E) 58º 40' 30'' Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Princípios específicos do Direito do Consumidor (Juiz do Trabalho - RJ - 2015). Sob a visão clássica, cinco são os princípios que regem o direito contratual. A relação de consumo é ajustada por contrato e aqueles princípios também a ela se aplicam. Contudo, em face da natureza da relação de consumo, alguns desses princípios têm seu valor reduzido, enquanto outros assumem relevância. Tem relevância para a relação de consumo, o seguinte princípio do direito contratual: A) Da ordem pública. B) Da relatividade dos contratos. C) Da boa-fé. D) De obediência às regras mercantis. E) Da autonomia da vontade. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Evolução das estruturas Os materiais e os sistemas construtivos e estruturais têm, no último século, apresentado uma enorme evolução, com inúmeras tecnologias inovadoras. Contudo, se recuarmos há 125 anos atrás, a história da arquitetura anterior a esta época estaria restrita às construções utilizando poucos materiais. Assinale abaixo a opção que melhor representa estes materiais: Selecione a resposta: A) Alvenaria e madeira. B) Madeira e aço. C) Madeira e pedra. D) Tijolo e madeira. E) Tijolo e aço. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Cisalhamento e detalhamento de vigas Conforme a NBR 6118 (ABNT, 2014), a armadura transversal mínima deve ser colocada nas vigas de modo a garantir a estabilidade das estruturas, mesmo na eventualidade de serem aplicados carregamentos não previstos no cálculo, evitando a ruptura abrupta logo após o surgimento das primeiras fissuras inclinadas. Nesse contexto, qual a armadura transversal mínima necessária por metro de viga, tendo em vista que ela tem seção de 30 x 80cm e altura útil de 77cm? Adote concreto C35 e aço CA-50. A) 2,43cm2/m. B) 2,84cm2/m. C) 3,12cm2/m. D) 3,54cm2/m. E) 3,85cm2/m. 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 |