Ir ao conteúdo
  • Cadastre-se

Problema com vetor / código sobre Numeros de Harshad


RO94

Posts recomendados

Ola alguém poderia me ajudar a resolver o problema do meu código ?

inicialmente ele era pra ser testado apenas uma vez se o numero digitado era de harshad ou n...

 

Mas agora eu preciso que um vetor n de números passados pelo usuário

sejam testados e ao final diga se são ou n números de harshad

 

Logica dos Números de harshad:

Um Número Harshad é um número que é divisível pela soma dos seus dígitos.

Por exemplo, 651392 não é um numero de harshad porque ele não é divisível por 26 (6+5+1+3+9+2).

 

Acredito que meu problema esteja relacionado ao uso dos vetores de forma incorreta mas já pesquisei por tudo 

e estou com muito problema em achar a logica correta.

Se alguém puder me ajudar ficarei muito grato.

#include <stdio.h>int main(void){    int numero = 0;    int digito = 0;    int sumaDig = 0;    int Harshad = 0; // Vale 1 se numero é harshad, e 0 se não for    int n = 0;    int x;    int aux[100];        printf("Digite un numero natural: ");        scanf("%d", &numero);        while(numero != 0)        {            n++;            aux[n] = numero;            scanf("%d", &numero);        }        for(x=1;x<=n;x++)            {                while(aux[x] <= n)                {                    digito = aux[x] % 10;                    sumaDig = sumaDig + digito;                    aux[x] = aux[x] / 10;                }                if (sumaDig != 0)                {                    if (aux[x] % sumaDig == 0)                    {Harshad = 1;}                    else {Harshad = 0;}                }        if(Harshad == 1)        printf("\nO numero %d e um numero Harshad\n",aux[x]);        if(Harshad == 0)        printf("\nO numero %d nao e um numero Harshad\n",aux[x]);        }    return 0;}

 

Link para o comentário
Compartilhar em outros sites

Observei que n é um contador depois em parte do seu código vejo n como parâmetro

de condição loop comparado com o valor de um elemento do vetor de entradas do usuário.

Seu problema neste ponto: while(aux[x] <= n) quando na verdade acho que é: while(aux[x])

 

Enquanto houver dígitos ou seja diferente de 0 continuasse o loop, claro que isso acabaria com

o resto do que faz o seu código enfim existe algumas correções que se pode detectar fazendo

debug parte por parte.

 

 

 

Hint: Eu acho que modulando este código fica mais fácil de fazer. Crie funções para operações

como por exemplo somar os dígitos

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!