• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NosferatuPT

Programa muito básico em C

10 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto. E para isso usas um ciclo em que somas o valor de cada dígito até não existam mais dígitos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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? :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora