Ir ao conteúdo
  • Cadastre-se
baloso

funções envolvendo números naturais em C

Recommended Posts

Alguém pode me ajudar a resolver essas questões?

Questão 1
As funções qd(n,p) que dado um número n e uma posição p (p= 0 corresponde aos dígitos das unidades, p = 1 ao digito das dezenas , etc) retorna o digito, e nd (n) que retorna o número de digitos são dadas. Se desejar, você pode usar recursividade, ou então resolver por casos.
Verifique se dado um número com no máximo 6 dígitos, ele é :
 
a)Um numero é novo se o produto dos seus dígitos ímpares acrescido do seu menor dígito for divisível por 7.
Aqui tá a resolução que eu tentei:
 
int novo(int n){return (pdi(n) + md(n))%7==0?1:0}
------------------------------------------------------------------
int pdi1(int n){return (1digitoimpar);}int pdi2(int n){return (1digitoimpar*2digitoimpar);}int pdi3(int n){return (1digitoimpar*2digitoimpar*3digitoimpar);}int pdi4(int n){return (1digitoimpar*2digitoimpar*3digitoimpar*4digitoimpar);}int pdi5(int n){return (1digitoimpar*2digitoimpar*3digitoimpar*4digitoimpar*5digitoimpar);}int pdi6(int n){return (1digitoimpar*2digitoimpar*3digitoimpar*4digitoimpar*5digitoimpar*6digitoimpar);}
-------------------------------------------------------------------
int 1digitoimpar(int n){return 1digitoimpar((qd(n,0))%2==1?1:0);}int 2digitoimpar(int n){return 2digitoimpar((qd(n,0))%2==1?
------------------------------------------------------------------
B) Um número é antigo se ele menos 5 unidades não for novo ou se a quantidade de dígitos 2 do número for maior do que a quantidade de dígitos 4 e 9 do terço do número.
 
c) Um número é copiador se a primeira metade não for nova e a segunda metade do seu quadrado for antiga. [ A 1ª metade de 123456 é 123, a 2ª metade é 456 (número par de dígitos). A 1ª metade de 12345 é 123, a 2ª metade é 345 (número ímpar de dígitos)]
 
d) Um número é inovador se a metade do seu reverso (número escrito ao contrário) é múltiplo da soma dos seus dígitos pares. O número possui um número ímpar de dígitos e não possui dígitos zero.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja este exemplo aqui. Com isto você consegue fazer as outras:

int qd (int n, int p) {    if (p < 0)        return -1;    int d = 0;    while(p>=0) {        d = n % 10;        n /= 10;        p--;    }    return d;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×