Pular para o conteúdo

Padrão 2: quebrar o número em dígitos

objetivo Com % 10 e / 10 você anda pelos dígitos igual anda por um vetor.

Duas contas resolvem tudo: num % 10 é o ÚLTIMO dígito, e num / 10 é o número SEM ele.

Então o caso recursivo é sempre: faço algo com num % 10 e chamo de novo com num / 10.

O caso base é num == 0, porque aí não sobrou dígito nenhum.

exemplo.cclique numa linha pra entender ela

Onde todo mundo escorrega

  • Esse molde vale pra número positivo. Com negativo o % 10 devolve resto negativo.
  • Não confunda: % 10 é o dígito, / 10 é o que sobra. Trocar os dois quebra tudo.

Desafio

Escreva contaDigito, que conta quantas vezes o dígito d aparece no número num. Exemplo: contaDigito(12321, 1) é 2.

int contaDigito(int num, int d)
o que a função tem que devolver
chamadasaída esperada
contaDigito(12321, 1)2
contaDigito(5000, 0)3
contaDigito(7, 7)1
contaDigito(999, 9)3
a sua função
linha 1
int contaDigito(int num, int d) {
    // caso base: num == 0

    // compare o ultimo digito com d e siga para num / 10
}

Ctrl+Enter (Cmd+Enter no Mac) roda. Esc sai do editor.

aperte Rodar pra ver a saída aqui
Ver a pilha de chamadas passo a passo

Mostra o que o seu código faz em cada chamada. É uma simulação didática, não substitui o botão de testar.

Dicas

Tenta sozinho primeiro. Travou de verdade, abre a primeira.