Ir ao conteúdo

C Função que determina o maior elemento de array e qnts vezes repetiu


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Olá, pessoas! Estou tendo dificuldades para um exercício com o seguinte enunciado:

 

"Escreva uma função que aceita como parâmetro um array de inteiros com N valores, e determina o maior elemento do array e o numero de vezes que este elemento ocorreu no array. A função deve ser do tipo void.

Exemplo: para um array com os seguintes elementos: 5, 2, 15, 3, 7, 15, 8, 6, 15, a função deve retorna para o programa que a chamou o valor 15 e o número 3 (indicando que o número 15 ocorreu 3 vezes)."

 

Minha dificuldade está em justamente montar essa função void capaz de determinar o maior elemento e seu numero de repetição. Caso alguém possa me dar um direcionamento, agradeço!

  • Obrigado 1
  • Solução
Postado

@Lekash    uma função do tipo void , não vai retornar nada , pois é isso que significa void , mas a função pode receber esse vetor por parâmetro e ver o maior e quantas vezes apareceu no vetor ,  usando um loop e comparando os números , poste o que você conseguiu fazer desse exercício para ajudarmos .

  • Obrigado 1
Postado

@devair1010 Acabei esquecendo de mandar o codigo, infelizmente a função void de analise não funciona direito e não encontrei o erro ainda. Aqui o código: 

int maximo, repet; 

    maximo = 0;
    repet = 0;

    void verificacao(int *elementos, int num_elem){    //Função void para verificar a e analisar a array de numeros

        maximo = elementos [0];
        int j = 0;

        for(j=0; j<=num_elem; j++){

                if (maximo<=elementos[j]){

                    maximo == elementos[j];
}

                for (j=0; j<=num_elem; j++){

                    if (maximo == elementos[j]){

                        repet++;

}
}
}

}

int main (){

    int N;
    int i = 0;

    printf("Ola, digite a quantidade de N numeros para sua lista:\n");
    scanf ("%d", &N);

    int lista[N];

    for (i = 0; i < N; i++){

       printf("Digite o numero %d:\n", i+1);
       scanf("%d", &lista[i]);

}

    verificacao(lista, N);

    printf("O maior numero da lista eh %d e o mesmo se repete %d vezes", maximo, repet);





        return 0;
}

 

  • Curtir 1
Postado
1 hora atrás, Lekash disse:

infelizmente a função void de analise não funciona direito e não encontrei o erro ainda

 

O fragmento de código abaixo, quando uma nova máxima é descoberta as, possíveis, repetições da máxima anterior perdem o sentido, por essa razão que a variável 'repet' deve ser zerada.

 

if (maior < elementos [index])
		maior= elementos [index],
		repetiu= 0;
		
else

if (maior == elementos [index])
		++ repetiu;

 

Falta esse tratamento no seu algoritmo.

  • Curtir 1
  • Obrigado 1
Postado

Pessoal, agradeço a todos pela ajuda. Acabei refazendo a void verificacao e funcionou (Eu tinha aninhado dois for ali e deu errado), testarei depois os métodos recomendados por vocês!

Eis o código finalizado:

#include<stdio.h>
#include<stdlib.h>

int vmaximo, repet; //Variaveis globais

    vmaximo = 0;
    repet = 0;

void verificacao(int *elementos, int num_elementos) {  //Esta função faz o papel de analisar cada elemento e determinar qual o maior elemento e seu fator de repetição

    int j;
    vmaximo = elementos[0];

        for(j=0; j<num_elementos; j++) {  //Usando esse laço podemos fazer uma "varredura" pela array

            if(vmaximo<=elementos[j]) {
            vmaximo = elementos[j];
}
}

        for(j=0; j<num_elementos; j++) {  //Esse outro laço conta quantas vezes o valor maximo foi repetido

            if(vmaximo==elementos[j]) {
            repet++;
}

}
}

void main (){

    int N;
    int i = 0;

    printf("Ola, digite a quantidade de N numeros para sua lista:\n");
    scanf ("%d", &N);

    int lista[N];

    for (i = 0; i < N; i++){

       printf("\nDigite o numero %d:\n", i+1);
       scanf("%d", &lista[i]);

}

    verificacao(lista, N); //Chamando a void verificacao

    printf("\nNumero de maior valor: %d\n", vmaximo);
    printf("Este numero se repetiu %d vez(es)\n", repet);

    system("pause");

}

 

  • Obrigado 1

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!