Ir ao conteúdo
  • Cadastre-se

C Programa que conta quantas vezes um número se repetiu.


Posts recomendados

Olá, preciso criar um programa em C que. Receba de entrada um número inteiro (exemplo: 124471992545265125), pode ser maior ou menor, e o programa me de o numero que se repete mais. 

Entrada: 174894564

Saída: 4

Alguém sabe como faço? ou se tem um código pronto para eu estudar.

Link para o comentário
Compartilhar em outros sites

É caso [exercício] para aplicação de tabela hash, sendo o número inteiro de uma variável int; a cada decomposição de unidade, determina-se uma chave da tabela hash [ou simplesmente o índice do vetor] que contém a quantidade de colisões [n. de ocorrências da unidade (0 – 9)]. Depois, determina-se qual índice tem o maior número e pronto! 

 

 

Link para o comentário
Compartilhar em outros sites

Eu faria um array onde os indices correspondem ao digito (ou seja, um int array[10]). Inicializaria tudo com zero e incrementaria em 1 o elemento cada vez que eu encontrasse um digito com seu indice. Separar um numero em digitos não eh difícil. O resto da divisao entre o numero e 10 da o ultimo digito do numero. Dividindo o numero por 10, o resultado eh o restante do numero sem esse ultimo digito:

 

long long num = 995793LL;//um numero qualquer
//dentro dum loop, pra voce contar todos os digitos
long long digito = num % 10LL;
num /= 10LL;

Isso no entanto só funciona pra numeros que caibam num long long. Se o numero estiver em formato de string, melhor ainda, basta ler cada um dos caracteres da string (cada um deles vai corresponder a um digito), converter pra int (funcao stoi, acho) e incrementar o array do mesmo jeito.

 

//não sei exatamente as regras de inicializacao de arrays em C puro, entao vou ser explicito
int arr[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

long long digito = 0;
//obtemos digito de uma das formas mencionadas acima. Resto 10 se o numero for realmente um inteiro. Indice por indice se for string.

arr[digito]++;

//no final, procuro o maior valor no array. Existem otimizacoes que podem ser feitas, mas pra efeito de resposta formal, creio que ta bom

 

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...