NosferatuPT Posted November 26, 2009 at 07:59 PM Report Share #297669 Posted November 26, 2009 at 07:59 PM Boas! Gostaria que me ajudassem a fazer um programa onde se peça um inteiro e calcule a soma dos seus dígitos. Eu sei fazer programas um pouco mais básicos que este, do tipo pedir 2 inteiros e somá-los... agora, não consigo compreender como fazer para ele ler os dígitos um a um. Estou habituado a que, quando se declara um inteiro, funcione como um todo. Link to comment Share on other sites More sharing options...
Baderous Posted November 26, 2009 at 08:11 PM Report Share #297671 Posted November 26, 2009 at 08:11 PM Utiliza o quociente e resto da divisão desse inteiro por 10 para obteres os seus algarismos. Se não perceberes como, experimenta fazer a conta de divisão à mão. Link to comment Share on other sites More sharing options...
NosferatuPT Posted November 26, 2009 at 08:19 PM Author Report Share #297673 Posted November 26, 2009 at 08:19 PM Utiliza o quociente e resto da divisão desse inteiro por 10 para obteres os seus algarismos. Se não perceberes como, experimenta fazer a conta de divisão à mão. Humm.. interessante. Então tenho de fazer tantas divisões quanto o número de dígitos existentes? Link to comment Share on other sites More sharing options...
Ferreira Posted November 26, 2009 at 08:32 PM Report Share #297675 Posted November 26, 2009 at 08:32 PM Exacto. E para isso usas um ciclo em que somas o valor de cada dígito até não existam mais dígitos. http://twitter.com/ferreira Link to comment Share on other sites More sharing options...
NosferatuPT Posted November 26, 2009 at 08:53 PM Author Report Share #297683 Posted November 26, 2009 at 08:53 PM Exacto. E para isso usas um ciclo em que somas o valor de cada dígito até não existam mais dígitos. Ok. Então posso utilizar um do.. while? Eu percebi a ideia..mas está a ser difícil executá-la.. desculpem a noobice =P Isto deve ser mesmo básico.. Estou a entrar em parafuso.. Eu percebo o conceito de divisão para obter o quociente e para obter o resto. Consigo aplicá-la se tiver 2 dígitos. Mas com mais, terei de fazer um ciclo. Podes dar-me uma pista sobre como o fazer? EDIT: Eu estive a pensar.. dentro do while devo ter de fazer qlquer coisa do género: como o meu objectivo é chegar ao primeiro dígito através das divisões, tenho de limitar a divisão até à gama desse dígito. Será entre 0 e 9, certo? Mas mesmo assim está a ser complicado escrever.. Link to comment Share on other sites More sharing options...
Wasted Posted November 26, 2009 at 09:21 PM Report Share #297688 Posted November 26, 2009 at 09:21 PM Basta usares um ciclo, vais dividindo até até a divisão ser zero. Imagina 125: 125/10 = 12,5 apanhas o 5 e guardas. 12/10 = 1.2 apanhas o 2 e guardas 1/10 = 0.1 apanhas o 1 e guardas. Entendes? 🙂 Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 26, 2009 at 09:23 PM Report Share #297689 Posted November 26, 2009 at 09:23 PM O resto da divisão inteira por 10 permite-te obter o último dígito, e a divisão inteira permite-te eliminar o último dígito do número (para que da próxima vez obtenhas o penúltimo dígito, e assim sucessivamente). Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
NosferatuPT Posted November 26, 2009 at 09:30 PM Author Report Share #297692 Posted November 26, 2009 at 09:30 PM Basta usares um ciclo, vais dividindo até até a divisão ser zero. Imagina 125: 125/10 = 12,5 apanhas o 5 e guardas. 12/10 = 1.2 apanhas o 2 e guardas 1/10 = 0.1 apanhas o 1 e guardas. Entendes? 🙂 Ahhh! Eu estava a ficar um pouco confuso... comecei a pensar assim: Faço 125 % 10 e tenho o 5. Depois divido outra vez por 10 e já tenho o primeiro dígito.. só que agora teria de multiplicar por 10 para ter o 2º.... Eu faço uma enooorme confusão de uma coisa tão simples... Muito obrigado 🙂 Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 26, 2009 at 09:34 PM Report Share #297694 Posted November 26, 2009 at 09:34 PM Se fizeres 125%10 tens o cinco, e se depois dividires por dez ficas com 12. Ou seja, basta fazeres novamente o resto da divisão inteira por 10 para obteres o 2. Não estou a ver onde é que foste buscar a multiplicação por 10. Já agora, outra alternativa, sem divisões (apenas com restos), é ires fazendo o resto da divisão inteira por 10, por 100, por 1000, por 10000, etc. Ou seja, começas com o divisor=10, e em cada iteração fazes divisor=divisor*10. Acho que esta solução ainda deve ser das que dá código mais simples. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
NosferatuPT Posted November 26, 2009 at 09:40 PM Author Report Share #297698 Posted November 26, 2009 at 09:40 PM Se fizeres 125%10 tens o cinco, e se depois dividires por dez ficas com 12. Ou seja, basta fazeres novamente o resta da divisão inteira por 10 para obteres o 2. Não estou a ver onde é que foste buscar a multiplicação por 10. Já agora, outra alternativa, sem divisões (apenas com restos), é ires fazendo o resto da divisão inteira por 10, por 100, por 1000, por 10000, etc. Ou seja, começas com o divisor=10, e em cada iteração fazes divisor=divisor*10. Acho que esta solução ainda deve ser das que dá código mais simples. Também não sei aonde fui buscar... 🙂 Muito obrigado 🙂 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now