Você está aqui: C++ ::: Dicas & Truques ::: Recursão (Recursividade) |
Como inverter uma string em C++ usando uma função recursivaQuantidade de visualizações: 617 vezes |
Nesta dica vamos novamente falar de recursão e recursividade em C++, ou seja, funções que chamam a si mesmas. Dessa vez vamos escrever uma função recursiva que inverte a ordem dos caracteres de uma palavra, frase ou texto. 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 <iostream> using namespace std; // função recursiva para inverter uma string void inverter_string(string& str, int n, int i){ // caso base? if (n <= i){ return; } // troca os dois caracteres de lugar swap(str[i], str[n]); // e chama a função mais uma vez inverter_string(str, n - 1, i + 1); } // função principal do programa int main(int argc, char *argv[]){ // vamos criar uma nova string string frase = "Gosto de programar em C++"; cout << "String original: " << frase << endl; // agora vamos inverter a string inverter_string(frase, frase.length() - 1, 0); // e mostramos o resultado cout << "String invertida: " << frase << endl; cout << "\n" << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: String original: Gosto de programar em C++ String invertida: ++C me ramargorp ed otsoG |
Link para compartilhar na Internet ou com seus amigos: |
C++ ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular juros simples e montante usando C++Quantidade de visualizações: 19571 vezes |
O regime de juros será simples quando o percentual de juros incidir apenas sobre o valor principal. Sobre os juros gerados a cada período não incidirão novos juros. Valor Principal ou simplesmente principal é o valor inicial emprestado ou aplicado, antes de somarmos os juros. Transformando em fórmula temos: J = P . i . n Onde: J = juros P = principal (capital) i = taxa de juros n = número de períodos Imaginemos uma dívida de R$ 2.000,00 que deverá ser paga com juros de 5% a.m. pelo regime de juros simples e o prazo para o pagamento é de 2 meses. O cálculo em C++ pode ser feito assim: ---------------------------------------------------------------------- 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[]) { float principal = 2000.00; float taxa = 0.08; int meses = 2; float juros = principal * taxa * meses; cout << "O total de juros a ser pago é: " << juros << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } O montante da dívida pode ser obtido das seguintes formas: a) Montante = Principal + Juros b) Montante = Principal + (Principal x Taxa de juros x Número de períodos) M = P . (1 + (i . n)) Veja o código: ---------------------------------------------------------------------- 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[]) { float principal = 2000.00; float taxa = 0.08; int meses = 2; float juros = principal * taxa * meses; float montante = principal * (1 + (taxa * meses)); cout << "O total de juros a ser pago é: " << juros << "\n"; cout << "O montante a ser pago é: " << montante << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
C++ ::: STL (Standard Template Library) ::: Vector C++ |
Como retornar uma referência ao último elemento de um vector C++ usando a função back()Quantidade de visualizações: 6951 vezes |
O último elemento de um contêiner STL vector pode ser acessado por meio da função back(). Como esta função é sobrecarregada, temos duas opções:reference back(); const_reference back() const; ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <vector> using namespace std; int main(int argc, char *argv[]){ // um vector vazio que conterá inteiros vector<int> valores; // vamos inserir três elementos valores.push_back(54); valores.push_back(13); valores.push_back(87); // vamos obter o valor do último elemento do vector // Note que back() pode ser usada dos dois lados // de uma operação de atribuição int valor = valores.back(); cout << "Último elemento: " << valor << endl; // vamos alterar o valor do último elemento valores.back() = 102; // vamos testar o resultado cout << "Último elemento: " << valores.back() << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: Último elemento: 87 Último elemento: 102 Note que aqui nós usamos: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int valor = valores.back(); para guardar o valor do último elemento na variável valor. Poderíamos também usar: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int& valor = valores.back(); valor = 102; Agora valor é uma referência direta ao último elemento do vector. Desta forma, qualquer alteração no valor da variável valor afetará também o último elemento do vector. Observe agora o seguinte trecho de código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int valor = valores.back(); // o último elemento é 87 valores.back() = 20; cout << "Último elemento: " << valor << endl; Aqui nós acessamos o valor do último elemento, guardarmos-o na variável valor e atribuímos o valor 20 à valores.back(). Porém, ao imprimirmos a variável valor o seu conteúdo ainda é 87. De fato, o que gostaríamos é que uma alteração em valores.back() afetasse também a variável valor. Assim: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int& valor = valores.back(); // o último elemento é 87 valores.back() = 20; cout << "Último elemento: " << valor << endl; Mas, como evitar alterações diretas na variável valor? Podemos declarar valor como uma referência constante, ou seja, usar a segunda versão da função back(), a saber const T&, que retorna uma referência constante. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- const int& valor = valores.back(); // o último elemento é 87 valores.back() = 20; valor = 300; // esta linha não compila cout << "Último elemento: " << valor << endl; Agora o efeito que queríamos é alcançado. Alterações em valores.back() afetam a variável valor, mas, não podemos alterar valor diretamente, já que esta variável é uma referência constante agora. |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercício Resolvido de C++ - Escreva uma função C++ que recebe três números inteiros e retorna o menor delesQuantidade de visualizações: 406 vezes |
Pergunta/Tarefa: Escreva um programa C++ que contenha uma função, método ou procedimento que recebe três números inteiros e retorne o menor deles como um inteiro. Seu método não deve produzir nenhuma saída, apenas retornar o menor número entre os três argumentos fornecidos. Sua saída deverá ser parecida com: Informe o primeiro número: 8 Informe o segundo número: 10 Informe o terceiro número: 7 O menor número é: 7 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 <iostream> #include <algorithm> using namespace std; // função que recebe três números e retorna o menor deles int menor(int a, int b, int c){ return min(min(a, b), c); } // função principal do programa int main(int argc, char *argv[]){ int n1, n2, n3, menor_numero; // vamos pedir para o usuário informar três // números inteiros cout << "Informe o primeiro número: "; cin >> n1; cout << "Informe o segundo número: "; cin >> n2; cout << "Informe o terceiro número: "; cin >> n3; // agora vamos calcular o menor número menor_numero = menor(n1, n2, n3); // e mostramos o resultado cout << "O menor numero é: " << menor_numero << endl; cout << "\n" << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
O exercício do direito à propriedade Os direitos de vizinhança, quando violados, abrem para o lesado a possibilidade de ingressar com a medidas judiciais assecuratórias do seu direito, como solicitar a suspensão da obra que está sendo realizada pelo vizinho, sua reformulação ou demolição. Sobre esse tema, assinale a alternativa correta e as possíveis alterações legislativas nesse procedimento: A) A ação de nunciação de obra nova é procedimento especial do Código de Processo Civil de 2015. B) A ação de nunciação de obra nova não deve sofrer, atualmente, mudança de terminologia e tramita pelo procedimento especial. C) O objetivo principal é reformular ou demolir a obra; a suspensão é mero pedido liminar no início da ação. D) A ação de nunciação de obra nova também pode ser ajuizada para a obra que já tiver sido finalizada. E) O prazo para ingressar com a nunciação é de até um ano e um dia a contar da conclusão da obra. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Qual o resultado da execução do seguinte código JavaScript?document.write(1 + "2" + "2"); A) O valor 122 será exibido. B) O valor 5 será exibido. C) O valor 32 será exibido. D) O valor NaN será exibido. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Perda de Carga Localizada, Acessórios de Tubulação Qual a perda de carga singular em um conduto de 100 m, diâmetro de 100 mm, com um fluido escoando a 2 m/s, apresentando as seguintes singularidades rosqueadas na tubulação: válvula globo totalmente aberta e cotovelo de 45º com raio normal? Selecione a resposta: A) 1,16 m. B) 0,61 m. C) 0,06 m. D) 1,22 m. E) 0,00 m. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Materiais empregados para instalação de água fria e esgoto Os materiais utilizados em tubulação de água fria têm evoluído muito nos últimos anos, acompanhando a evolução tecnológica da Ciência dos Materiais. Os canos de água fria HDPE - polietileno - apresentam vantagens significativas. Assinale a alternativa que contém uma delas: A) São rígidos e, por isso, suportam grandes cargas, podendo ser usados com pouca espessura de parede. B) Podem ser pintados na cor desejada, o que reduz o custo na hora da marcação na obra. C) São mais leves do que as tubulações metálicas e flexíveis, além de terem uma vida útil superior quanto à resistência à oxidação. D) Elevada ductilidade e capacidade de serem soldados apenas por fricção, o que aumenta a resistência mecânica da junta. E) São de cor marrom, sendo utilizados para esgoto, a temperaturas de até 20ºC e escoamento de 75m.c.a. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
(CEBRASPE - 2019 - Analista de Gestão de Resíduos Sólidos SLU DF) Julgue o item, acerca de aspectos relacionados aos componentes do ciclo hidrológico. A interceptação vegetal de parte da precipitação tende a reduzir a vazão ao longo do ano e a retardar e reduzir o pico de cheias. A) Verdadeiro B) Falso 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 |
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 |