Você está aqui: C++ ::: Dicas & Truques ::: Matemática e Estatística |
Obtendo o arco seno de um númeroQuantidade de visualizações: 12188 vezes |
/* Arco seno (ou arco-seno) é a função inversa de seno: Se sin x = y então arcsin y = x As funções float asin(float arg); double asin(double arg); long double asin(long double arg); da linguagem C++ recebem um valor na faixa -1 <= x <= 1 e retornam um valor na faixa -PI/2 <= x <= PI/2. Se o valor fornecido não estiver dentro da faixa permitida, um erro de domínio será provocado. */ #include <iostream> using namespace std; int main(int argc, char *argv[]) { double numero = 0.5; cout << "O arco seno de " << numero << " é " << asin(numero) << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
Link para compartilhar na Internet ou com seus amigos: |
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++ ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como alocar memória dinâmica usando o operador new do C++Quantidade de visualizações: 12194 vezes |
Em algumas situações precisamos alocar memória dinamicamente. Em C++ isso é feito com o auxílio do operador new. Este operador permite alocar uma determinada quantidade de bytes, alinhados de forma a representar o objeto para o qual queremos reservar memória. Veja um exemplo de código no qual alocamos memória dinâmica para uma 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[]){ // aloca memória para um objeto do tipo int int *ponteiro = new int; // vamos definir o valor para o objeto recém-alocado *ponteiro = 20; // vamos exibir seu valor cout << *ponteiro << endl; // vamos liberar a memória delete ponteiro; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Note que aqui a memória foi alocada e guardada em um ponteiro. Veja também o uso do operador delete para liberar a memória alocada. Isso evita os vazamentos de memória tão frequentes em aplicações que lidam com a memória dinâmica. É claro que este não é o exemplo mais prático. Qual a vantagem de se alocar memória para um int? Declarar uma variável teria sido mais eficiente. A alocação de memória dinâmica é mais útil quando estamos lidando com objetos mais complexos que os tipos básicos. Alguns exemplos envolvem a criação de objetos de classes, matrizes, estruturas de dados, etc. Veja um exemplo no qual temos uma declaração de uma classe chamada Cliente e em seguida alocamos memória para uma instância desta classe: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <string> using namespace std; // declaração da classe Cliente class Cliente{ public: Cliente(); string obterNome(); void definirNome(string); private: string nome; }; // implementação dos métodos da classe Cliente::Cliente(){} // construtor vazio // obtém o nome do cliente string Cliente::obterNome(){ return this->nome; } // define o nome do cliente void Cliente::definirNome(string nome){ this->nome = nome; } int main(int argc, char *argv[]){ // aloca memória para um objeto da classe Cliente Cliente *c = new Cliente(); // vamos definir o nome do cliente c->definirNome("Osmar J. Silva"); // vamos exibir o nome do cliente cout << c->obterNome() << endl; // vamos liberar a memória usada delete c; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: Nome do cliente: Osmar J. Silva |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercício Resolvido de C++ - Um método recursivo que conta de 0 até 10Quantidade de visualizações: 843 vezes |
Pergunta/Tarefa: Escreva um método recursivo que conta e exibe os valores de 0 até 10. Seu método deverá possuir a seguinte assinatura: void contar_recursivamente(int n){ // sua implementação aqui } Sua saída deverá ser parecida com: 0 1 2 3 4 5 6 7 8 9 10 Veja a resolução comentada deste exercício usando C++: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <cstdlib> using namespace std; // método recursivo que conta de 0 até 10; void contar_recursivamente(int n){ // vamos exibir o número atual cout << n << " "; // devemos prosseguir com a recursividade? if(n < 10){ // incrementa o valor de n n++; contar_recursivamente(n); // e faz uma nova chamada recursiva } } // função principal do programa int main(int argc, char *argv[]){ // efetua uma chamada ao método recursivo fornecendo o primeiro valor contar_recursivamente(0); cout << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
Vamos testar seus conhecimentos em |
Dimensionamento de pilares intermediários Para efeito de projeto, existem três tipos de pilar: extremidade, intermediário e de canto. Cada pilar é calculado de acordo com sua classificação. Eduarda foi contratada para realizar o projeto estrutural de uma edificação. No pilar 5 (pilar intermediário), Eduarda calculou o índice de esbeltez nas duas direções (x,y) e verificou o efeito local de 2ª ordem nas duas direções. Dados: Nk = 600kN Dimensão = 20cm × 30cm lex = ley = 280cm Quais resultados Eduarda obteve? A) Índice de esbeltez na direção x: 48,34. Índice de esbeltez na direção y: 31,29. B) Índice de esbeltez na direção x: 32,29. Índice de esbeltez na direção y: 32,29. C) Índice de esbeltez na direção x: 48,44. Índice de esbeltez na direção y: 32,29. D) Índice de esbeltez na direção x: 38,44. Índice de esbeltez na direção y: 62,29. E) Índice de esbeltez na direção x: 18,44. Índice de esbeltez na direção y: 22,29. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica |
Densidade de um fluido Um fluido encontra-se em um recipiente com volume de 300L. Sabendo que a massa desse fluido é de 2kg, qual a sua densidade em kg/m3? A) 0,67kg/m3. B) 6,67kg/m3. C) 0,15kg/m3. D) 150kg/m3. E) 151,5kg/m3. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
Como é chamada a área de relevo mais elevado entre cursos de água contíguos e que serve para delimitação das bacias hidrográficas? A) Vale fluvial. B) Colúvio. C) Interflúvio. D) Planalto. E) Planície pluvial. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Alvenaria: Técnicas construtivas Durante o levantamento, devemos aferir o nivelamento e o prumo de uma parede em blocos cerâmicos: A) Somente se houver um embarrigamento ou desnivelamento visível. B) Ao levantar 1,0 m a parede. C) Somente na última fiada. D) A cada fiada executada. E) A cada 3 fiadas executadas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica |
Raio Hidráulico Qual é o raio hidráulico em um canal de seção retangular com 2,00 m de largura por 1,20 m de altura? Considere que este canal está preenchido com 1/3 de água da sua capacidade. A) 0,10 m B) 0,29 m C) 0,19 m D) 2,29 m E) 0,39 m Verificar Resposta Estudar Cards Todas as Questões |
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 |
VB.NET - Como contar as ocorrências de um caractere em uma string em VB.NET usando o método IndexOf() |
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 |