Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tailine

Um algoritmo que imprima todos os numeros de armstrong até o numero

Recommended Posts

Numero de armstrong= um numero que separando seus digitos e fazendo o cubo de cada um e somando da o msmo numero!!!

Detalhe...em linguagem 'C'...............

Por favor....alguém me ajuda

 

Um detalhe...................Preciso que este algoritmo imprima todos os numeros de armstrong abaixo do numero digitado até zero........

Compartilhar este post


Link para o post
Compartilhar em outros sites

//Não está muito bem, mas funciona

//PARA 3 DIGITOS

 

#include<stdio.h>

 

int main(void){

int num,a,b,c,d,teste = 0;

 

printf("Entre com numero: ");

scanf("%d",&num);

a = num % 10;

d = num % 100;

b = d / 10;

c = num / 100;

teste = teste + (a * a * a) + (b * b * b) + (c * c * c);

if(teste == num)

printf("Numero %d de Armstrong.",num);

else

printf("Numero %d nao Armstrong.",num);

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem...........

então me diz como fazer que apareça os numeros de armstrond digitados a partir do numero digitado

até que chegue a zero????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai precisar de um loop do número digitado até 0, e deverá realizar o cálculo para cada repetição do loop.

No caso, você precisará de algo mais flexível que o código postado acima. Para ir pegando os números pode fazer uma array dinâmica não sei se você já está nessa parte da programação?

Deixa eu ver se penso em uma lógica...

int aux = numero;
int *numeros = NULL;
int conta_array = 0;
while(aux > 0)
{
   conta_array++;
   numeros = (int*)realloc(numeros, sizeof(int) * conta_array);
   numeros[conta_array - 1] = aux % 10;
   aux /= 10;
}

//usa os números aqui

free(numeros);
numeros = NULL;

Assim, você tem uma array com os algarismos que compõem o número, conta_array é uma variável que guarda quantos elementos tem a array dos algarismos, ela é importante para que você não estoure os limites quando for utilizar os números. Por enquanto que é com adição, não faz muita diferença, mas tenha em mente que os algarismos estão invertidos. A unidade é o último elemento, a dezena o penúltimo, e assim vai indo. Pra contornar, quando for utilizar todos os elementos em um loop por exemplo, apenas faça o loop de conta_array - 1 até 0. Existem outras soluções para outras situações mas basicamente o que você vai usar aqui é um loop, onde vai fazer o cubo de um elemento e adicionar esse cubo em uma outra variável, que vai receber os cubos de todos os números, e por fim comparar com o número que você quer descobrir se é de armstrong ou não.

 

Pra você entender mais ou menos como funciona a lógica da separação dos algarismos, veja como seria o andamento quando o número atual for 574:

 

574 - número agora

%10 = 4 - tiramos a unidade pegando o resto de uma divisão por 10

/10 = 57.4 (inteiro)= 57 - dividimos o número por 10, e arredondamos a divisão por causa do tipo de dados. A centena virou dezena e a dezena virou unidade, percebe?

 

%10 = 7 - agora, com a mesma lógica, tiramos a dezena

/10 = 5.7 (inteiro)= 5 - dividimos denovo o número, agora só sobra a centena como unidade

 

%10 = 5; - tiramos o resto da divisão por 10 para pegar a óbvia unidade que veio da centena. Parece meio óbvio agora, mas é preciso esse cálculo para que possamos usar números de outros tamanhos

/10 = 0.5 = 0 - dividimos o número, dessa vez arredonda para 0, e o loop termina

 

Saca?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor respeite as regras do fórum..

* Você duplicou tópicos

* Fica falando q é urgente nas suas mensagens.

 

Vow reforçar aki:

Regras do Fórum

Leia antes de postar

 

Espero q isso naum ocorrá senaum você estará sujeita a levar uma punição.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.