Tailine 0 Denunciar post Postado Abril 11, 2009 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
rafael.t.a 0 Denunciar post Postado Abril 11, 2009 //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
Tailine 0 Denunciar post Postado Abril 13, 2009 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
José Enésio 4 Denunciar post Postado Abril 13, 2009 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
quitZAUMMM 18 Denunciar post Postado Abril 13, 2009 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