Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Uma função recursiva que conta quantas vezes um valor inteiro k ocorre em um vetor de inteiros - Desafio de Programação Resolvido em C++

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

Escreva uma função recursiva C++ que conta quantas vezes um valor inteiro k ocorre em um vetor de 10 inteiros. Sua função deverá ter a seguinte assinatura:

// função recursiva que recebe um valor e um vetor e devolve
// quantas vezes o valor se repete no vetor informado
int quant_repeticoes(int indice, int valor, int vetor[]){
  // sua implementação aqui
}
Sua aplicação deverá solicitar ao usuário os valores do vetor e o valor a ser pesquisado.

Sua saída deverá ser parecida com:

Informe o 1 valor: 2
Informe o 2 valor: 7
Informe o 3 valor: 4
Informe o 4 valor: 7
Informe o 5 valor: 1

Informe o valor a ser pesquisado no vetor: 7
O valor informado se repete 2 vezes.
Resposta/Solução:

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>

// define o tamanho do vetor
#define TAM_VETOR 5

using namespace std;

// função recursiva que recebe um valor e um vetor e devolve
// quantas vezes o valor se repete no vetor informado
int quant_repeticoes(int indice, int valor, int vetor[]){
  if(indice == TAM_VETOR - 1){ // caso base...hora de parar a recursividade
    if(vetor[indice] == valor){
      return 1; // mais um repetição foi encontrada
    }
  }
  else{ // dispara mais uma chamada recursiva
    if(vetor[indice] == valor){ // houve mais uma repetição
      return 1 + quant_repeticoes(indice + 1, valor, vetor);
    }
    else{
      return 0 + quant_repeticoes(indice + 1, valor, vetor); // não repetiu
    }
  }
    
  return 0; // só para deixar o compilador satisfeito...esta linha nunca é executada
}

// função principal do programa
int main(int argc, char *argv[]){
  // vamos declarar um vetor de 10 inteiros
  int valores[TAM_VETOR];
  int i, valor, repeticoes;
	  
  // vamos pedir ao usuário que informe os valores do vetor
  for(i = 0; i < TAM_VETOR; i++){
    cout << "Informe o " << (i + 1) << ".o valor: ";
    // efetua a leitura do valor informado para a posição atual do vetor
    cin >> valores[i];
  }
    
  // agora vamos pedir para informar o valor a ser pesquisado
  cout << "\nInforme o valor a ser pesquisado no vetor: ";
  cin >> valor;
    
  // e vamos ver a quantidade de repetições
  repeticoes = quant_repeticoes(0, valor, valores);
  cout << "O valor informado se repete " << repeticoes << " vezes.";
  
  cout << "\n\n";
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}


Link para compartilhar na Internet ou com seus amigos:

C++ ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o operador condicional (operador ternário) da linguagem C++ - C++ para iniciantes

Quantidade de visualizações: 26830 vezes
A linguagem C++ fornece um operador condicional, também chamado de operador ternário) que é muito semelhante a um bloco if...else. Este operador aceita três operandos. O primeiro operando é uma condição, o segundo é valor para a expressão condicional se o resultado do teste for true. O terceiro operando é o valor para a expressão condicional caso o resultado do teste for false. Veja um exemplo:

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

int valor = 10;

cout << (valor >= 5 ? "Maior ou igual a 5" : "Menor que 5");

Este trecho de código pode ser escrito usando if...else da seguinte forma:

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

int valor = 10;

if(valor >= 5)
  cout << "Maior ou igual a 5";
else
  cout << "Menor que 5";

O operador condicional pode ser resumido na seguinte estrutura:

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

Exp1 ? Exp2 : Exp3

A expressão Exp1 é avaliada. Se esta resultar verdadeira, a expressão Exp2 se torna o resultado da operação. Se a expressão Exp1 resultar falso, a expressão Exp3 se torna o resultado da operação. Veja mais um exemplo:

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

int valor = 5;
	
// usando o operador condicional I
bool res = (valor > 10 ? true : false);

// usando o operador condicional II
(res ? cout << "Verdadeiro" : cout << "False");



C++ ::: Dicas & Truques ::: Matemática e Estatística

Como calcular juros compostos e montante usando C++

Quantidade de visualizações: 16952 vezes
O regime de juros compostos é o mais comum no sistema financeiro e portanto, o mais útil para cálculos de problemas do dia-a-dia. Os juros gerados a cada período são incorporados ao principal para o cálculo dos juros do período seguinte.

Chamamos de capitalização o momento em que os juros são incorporados ao principal. Após três meses de capitalização, temos:

1º mês: M = P .(1 + i)
2º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i)
3º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) x (1 + i)

Simplificando, obtemos a fórmula:

M = P . (1 + i)^n

Importante: a taxa i tem que ser expressa na mesma medida de tempo de n, ou seja, taxa de juros ao mês para n meses.

Para calcularmos apenas os juros basta diminuir o principal do montante ao final do período:

J = M - P

Vejamos um exemplo:

Considerando que uma pessoa empresta a outra a quantia de R$ 2.000,00, a juros compostos, pelo prazo de 3 meses, à taxa de 3% ao mês. Quanto deverá ser pago de juros?

Veja o código C++ para a resolução:

----------------------------------------------------------------------
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.03; // 3%
  int meses = 3;
  
  float montante = principal * pow((1 + taxa), meses);
  float juros = montante - principal;
  
  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;
}

Um outra aplicação interessante é mostrar mês a mês a evolução dos juros. Veja o código a seguir:

----------------------------------------------------------------------
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.03; // 3%
  int meses = 3;
  float anterior = 0.0;
  float montante;
  float juros;
  
  for(int i = 1; i <= meses; i++){
    montante = principal * pow((1 + taxa), i);
    juros = montante - principal - anterior;
		
    anterior += juros;
  
    cout << "Mês: " << i << " - Montante: " <<
       montante << " - Juros " << juros << "\n";
  }
	
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}



C++ ::: Fundamentos da Linguagem ::: Tipos de Dados

Como usar o tipo de dados int da linguagem C++

Quantidade de visualizações: 10582 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



Vamos testar seus conhecimentos em JavaScript

Qual é a forma correta de se inserir comentários de múltiplas linhas em JavaScript?

A) <!-- Este comentário
tem mais de uma linha -->

B) // Este comentário
tem mais de uma linha //

C) # Este comentário
tem mais de uma linha #

D) /* Este comentário
tem mais de uma linha */
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Equação de Bernoulli

Considere o tubo de fluxo abaixo contendo óleo, que flui de forma a podermos considera-lo um fluido ideal. Ele flui por um tubo que sobe de nível e se estreita. Dois manômetros marcam a pressão em dois pontos do tubo, como mostra a figura. Qual o valor da pressão indicada no segundo manômetro? (Dados: ρóleo = 900 kg / m3 e g = 9,8 m/s2)



A) 290 kPa

B) 109 kPa

C) 114 kPa

D) 286 kPa

E) 90,7 kPa
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Dimensionamento de Redes de Distribuição de Água

Qual o número de habitantes se deve atingir para que um bloco populacional que hoje é atendido pela tubulação de 150 mm de diâmetro, e cada habitante consome em média 300 L/dia, tendo uma vazão no sistema de 6,5 L/s, ao qual ainda consegue atender bem atualmente? Busque consultar a tabela da norma ABNT que indica a vazão máxima para cada diâmetro de tubulação.



A) 5000 habitantes

B) 5520 habitantes

C) 3000 habitantes

D) 652 habitantes

E) 2256 habitantes
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Fases de uma obra

Em relação à parte gráfica de um projeto, a Planta de Locação/Localização serve, comumente:

A) Como ponto de partida para a marcação da construção no terreno.

B) Para estabelecer a posição em relação às divisas do terreno e ao alinhamento das vias públicas.

C) Como projeção vertical, obtida por planos verticais que interceptam as paredes, portas e janelas, fornecendo maiores informações para a execução da obra.

D) Como projeções verticais das fachadas ou faces externas dos edifícios.

E) Como projeção horizontal da seção reta, passando acima do peitoril das janelas, para que fiquem representados todos os vãos.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

O código abaixo é válido em Python?

nome1 = "ALBERTO"
nome2 = 'FERNANDA'
print(nome1)
print(nome2)

A) Sim

B) Não
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

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: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 46 usuários muito felizes estudando em nosso site.