Você está aqui: C++ ::: C++ para Engenharia ::: Hidrologia e Hidráulica |
Como calcular o volume de chuvas em C++ - Fórmula do cálculo do volume de chuvas em C++Quantidade de visualizações: 124 vezes |
O estudo da Hidrologia passa, necessariamente, pelo cálculo do volume de chuvas em uma determinada região, ou bacia hidrológica. Assim, é comum ouvirmos alguém dizer que, em um determinado local, choveu 100 mm durante um determinado período. Mas o que isso significa? O mês mais chuvoso em Goiânia é dezembro, com média de 229 milímetros de precipitação de chuva. Isso significa que, em uma área de 1 m2, a lâmina de água formada pela chuva que cai apresenta uma altura de 229 milímetros. Como sabemos que o volume é a área multiplicada pela altura, tudo que temos a fazer é considerar a área de 1 m2 multiplicada pela altura da lâmina de água (convertida também para metros). Veja a fórmula: \[\text{Volume} = \text{(Área da Base) x Altura}\] Lembre-se de que volume pode ser retornado em litros, ou seja, 1 m3 = 1000 litros. Veja agora o código C++ completo que pede para o usuário informar a precipitação da chuva, ou seja, a altura da lâmina de água em milímetros e retorna o volume de água em litros. ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; // função principal do programa int main(int argc, char *argv[]){ // variáveis usadas na resolução do problema double altura_lamina, volume_chuva; // vamos pedir para o usuário informar a altura da lâmina // de água em milímetros cout << "Altura da lâmina de água em milímetros: "; cin >> altura_lamina; // o primeiro passo é converter os milímetros da lâmina de água // para metros altura_lamina = altura_lamina / 1000.0; // agora que já temos a altura da lâmina em metros, vamos multiplicar // pela base (1 metro quadrado) para obtermos o volume da chuva por // metro quadrado volume_chuva = (altura_lamina * 1.0) * 1000.0; // vamos mostrar o resultado cout << "O volume da chuva é: " << volume_chuva << " litros para cada metro quadrado" << endl; cout << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: Altura da lâmina de água em milímetros: 229 O volume da chuva é: 229.0 litros para cada metro quadrado Qual é o volume de 1 mm de chuva? A altura pluviométrica é a espessura da lâmina d'água precipitada que cobre a região atingida pela chuva. Geralmente a unidade de medição é o milímetro (mm) porque o aparelho que mede a chuva, o pluviômetro, é lido em milímetros. O pluviômetro é um aparelho meteorológico destinado a medir, em milímetros, a altura da lâmina de água gerada pela chuva que caiu numa área de 1 m2. 1 mm de chuva equivale a 1 litro de água, ou 1 dm3, considerando a área de 1 m2. |
![]() |
C++ ::: Dicas & Truques ::: Arquivos e Diretórios |
Como criar diretórios em C++ usando a função mkdir()Quantidade de visualizações: 10248 vezes |
Em algumas situações nossos códigos C++ precisam criar diretórios. Isso pode ser feito com o auxílio da função mkdir(), disponível no header direct.h (trazido da linguagem C). Veja a assinatura desta função:int _mkdir(const char *pathname); Veja um trecho de código C++ no qual criamos um diretório no mesmo diretório do executável. ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <direct.h> using namespace std; int main(int argc, char *argv[]){ // vamos criar o diretório char diretorio[] = "estudos"; // vamos testar se houve erro na criação do diretório if(mkdir(diretorio) == -1){ cout << "Erro: " << strerror(errno) << endl; } else{ cout << "Diretório criado com sucesso" << endl; } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } É possível usar a versão Unicode de mkdir(), ou _mkdir(). O método _wmkdir(), também presente em direct.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <direct.h> using namespace std; int main(int argc, char *argv[]){ // vamos criar o diretório wchar_t diretorio[] = L"C:\\Dev-Cpp\\estudos"; // vamos testar se houve erro na criação do diretório if(_wmkdir(diretorio) == -1){ cout << "Erro: " << strerror(errno) << endl; } else{ cout << "Diretório criado com sucesso" << endl; } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Note que agora eu troquei o tipo char por wchar_t e usei o sinalizado L antes da atribuição da string. |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: C++ Básico |
Exercício Resolvido de C++ - Ler três números inteiros e indicar se eles estão em ordem crescente ou decrescenteQuantidade de visualizações: 525 vezes |
Pergunta/Tarefa: Escreva um programa C++ que pede para o usuário informar três números inteiros e informa se eles estão em ordem crescente ou decrescente. Se os números estiverem em ordem crescente, escreva "Ordem Crescente". Se estiverem em ordem decrescente, escreva "Ordem Decrescente". Do contrário escreva "Sem ordem definida". Sua saída deverá ser parecida com: Primeiro número: 4 Segundo número: 8 Terceiro número: 11 Ordem Crescente Veja a resolução comentada deste exercício em 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; // função principal do programa int main(int argc, char *argv[]){ // variáveis usadas na resolução do exercício int a, b, c; // vamos pedir para o usuário informar três números cout << "Primeiro número: "; cin >> a; cout << "Segundo número: "; cin >> b; cout << "Terceiro número: "; cin >> c; // os números estão em ordem crescente? if (a < b && b < c){ cout << "Ordem Crescente" << endl; } // os números estão em ordem decrescente? else if (a > b && b > c){ cout << "Ordem Decrescente" << endl; } // sem ordem definida else{ cout << "Sem ordem definida" << endl; } cout << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
C++ ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como ordenar os elementos de vetor C++ usando a Ordenação da Bolha (Bubble Sort) - RevisadoQuantidade de visualizações: 15263 vezes |
O método ou algorítmo de ordenação da bolha é uma das técnicas mais simples de ordenação. No entanto, este método não é eficiente, visto que o tempo despendido para sua execução é muito elevado se comparado à outros métodos existentes. Geralmente usamos este método quando queremos ordenar 50 elementos ou menos. O entendimento deste método é fácil. Se estivermos ordenando os valores do menor para o maior, o método da bolha percorre os elementos da matriz, comparando e movendo o menor valor para a primeira posição do vetor (array), tal qual bolhas indo para a superfície. Veja um exemplo completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; void bubble_sort(int matriz[], int tam){ int temp, i, j; for(i = 0; i < tam; i++){ for(j = 0; j < tam; j++){ if(matriz[i] < matriz[j]){ temp = matriz[i]; matriz[i] = matriz[j]; matriz[j] = temp; } } } } int main(int argc, char *argv[]) { int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11}; int const quant_elem = 9; // imprime a matriz sem a ordenação for(int i = 0; i < quant_elem; i++){ cout << valores[i] << " "; } // vamos ordenar a matriz bubble_sort(valores, quant_elem); // imprime a matriz ordenada cout << endl; for(int i = 0; i < 9; i++){ cout << valores[i] << " "; } cout << "\n" << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executarmos este código nós teremos o seguinte resultado: 4 6 2 8 1 9 3 0 11 0 1 2 3 4 6 8 9 11 Pressione qualquer tecla para continuar... |
C++ ::: Dicas & Truques ::: Strings e Caracteres |
Como acessar os caracteres de uma string C++ individualmente usando um iteradorQuantidade de visualizações: 10988 vezes |
Nesta dica mostrarei como podemos usar um iterador para percorrer todos os caracteres de uma palavra, frase ou texto em C++. Para isso nós vamos combinar um iterator e as funções begin() e end(). Veja o código C++ completo para o exemplo: ---------------------------------------------------------------------- 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; // função principal do programa C++ int main(int argc, char *argv[]){ // vamos declarar um objeto da classe string string palavra("FACULDADE"); // agora criamos um iterador para a string string::iterator it; // e usamos um laço for para percorrer o iterador // do início ao fim for(it = palavra.begin(); it < palavra.end(); it++){ // e mostramos os caracteres individuais cout << *it << "\n"; } cout << "\n" << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: F A C U L D A D E |
C++ ::: Fundamentos da Linguagem ::: Tipos de Dados |
Apostila C++ para iniciantes - Como usar o tipo de dados short ou short int da linguagem C++Quantidade de visualizações: 13462 vezes |
O tipo de dados short (também chamado de short int) da linguagem C++ é uma variação do tipo int e geralmente possui a metade da capacidade de armazenamento deste. Nós o usamos quando queremos representar números inteiros, ou seja, sem partes fracionárias, que não sejam grandes o suficiente para exigir variáveis do tipo int. 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 short short idade = 45; cout << "A idade é: " << idade << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Veja que a maioria dos compiladores C++ não faz distinção entre os tipos short e short int. A capacidade de armazenamento do tipo short depende da arquitetura na qual o programa está sendo executado. Uma forma muito comum de descobrir esta capacidade é usar os símbolos SHRT_MIN e SHRT_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: " << SHRT_MIN << "\n"; cout << "Valor máximo: " << SHRT_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: -32768 Valor máximo: 32767 Veja que o tipo short 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[]){ short soma = SHRT_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: -32767 Note que este não é o resultado esperado, visto que SHRT_MAX + 2 deveria retornar: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 32767 + 2 = 32769 Porém, como o valor máximo que pode ser armazenado em um short é 32767, 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 short ser armazenado em 2 bytes, o que resulta em 16 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 short: ---------------------------------------------------------------------- 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 short: " << sizeof(short) << " bytes\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 short: 2 bytes |
Desafios, Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
Quem Somos |
![]() Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
|
![]() Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..
|
Linguagens Mais Populares |
1º lugar: Java |
Códigos Fonte |
![]() 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 |
![]() 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 |