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: 45 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:

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

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
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
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



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