Ir ao conteúdo
  • Cadastre-se

C função recursiva que conta quantos pares tem no vetor


rapereira

Posts recomendados

#include <stdio.h>

#define N 6

int verificaPar (int v[], int n, int qtd, int indice); // protótipo

int main()
{
    int vetor[N] = {4, 5, 3, 8, 9, 7};  // vetor igual do exercicio
    int resultado ; // ja tentei inicializar como 0 para ver se nao tem lixo e n adiantou


    

    resultado = verificaPar(vetor, N, 0, 0); // verificando o retorno

    printf("Quantidade de numeros pares:   %d", resultado); // printando a quantidade

    return 0;

}

int verificaPar(int v[], int n, int qtd, int indice)
{

    if(v[indice]%2 == 0) //verificação pra ver se o numero daquela posicao é par.
    {
        qtd++;

        // acho q o erro está nessa condição aqui
        if( v[indice] >= n-1)  // verifica se o indice chegou ao final do total de numeros do vetor.(n-1 porque a ultima posicao tem n-1 d indice)
        {
            return qtd; // se sim, devolve a quantidade acumulada de numeros pares.
        }

    }
    else
    {
        verificaPar(v,n,qtd, indice+1); // chama a função com indice +1 (incremento)
    }



}

Por que isso não funciona?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

#include <stdio.h>

#define N 10

void verificaPar (int v[], int n, int* qtd, int indice);

int main()
{
    int vetor[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
    int qtd = 0;
    verificaPar(vetor, N, &qtd, 0);

    printf("Quantidade de numeros pares:   %d", qtd);

    return 0;

}

void verificaPar(int v[], int n, int* qtd, int indice)
{
    if(v[indice]%2 == 0)
    {
        (*qtd)++;
    }
    if( indice >= n-1)
    {
        return;
    }
    verificaPar(v,n, qtd, indice+1);
}

@rapereira Assim funcionou até onde eu testei.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá!

Sugestão

 

É bastante comum funções de vetores terem só 2 parâmetros: vetor e seu tamanho.

Acredito que isso geralmente é bem interessante.

 

Em 18/06/2019 às 14:27, rapereira disse:

int verificaPar (int v[], int n, int qtd, int indice); // protótipo

Quando leio verificarPar parece que essa função apenas confirma se há pares, quando na verdade vai além disso retornando um inteiro com a número de de valores pares do vetor. Por  isso, numero_de_pares, contar_pares e afins é bem mais descritivo.

int numero_de_pares (int vet[], int vet_tamanho); // protótipo

 

 code

int numero_de_pares( int vet[], int vet_tamanho )
{	vet_tamanho= vet_tamanho-1;    /* vai t-1 até  t < 0  */
  	if (0 > vet_tamanho) return 0; /* finalizando a série quando t < 0  */

	if (0 == (vet[vet_tamanho]%2)) /* adiciona +1 no return, somente se, é par  */
	{	return (1+numero_de_pares( vet, vet_tamanho )); /* chamada para elemento anterior */
	}
	return numero_de_pares( vet, vet_tamanho );
}

 

Dicas, sugestões, perguntas pode dizer escrever.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!