[C]duvida

Ruanes

Power Member
Oi,

tou a fazer um programa que recebe os dados de um usuario. A certa altura pesso o ano de nascimento e queria fazer o seguinte:
Depois do usuario digitar o ano queria isolar os quatro algarismos e de seguida soma-los.

O problema é que não sei como fazer isso. Estava a pensar em tornar a variavel inteira numa string e de seguida dividir essa variavel noutras quatro variaveis inteiras. Sou novo nisto (em C e em algoritmos) por isso nao estou bem a ver como e que vou fazer.

P.S. Agradecia que não me dessem o codigo todo, apenas algumas intruões.
 
podes fazer uma string como tinhas dito e pões um ciclo para a correr. por exemplo.

Código:
for(i=1;i<=4;i++)
{soma+=ano[i];};

se é só para somar serve perfeitamente. não sei se tem erros de lógica, já nao mexo a algum tempo em c e c++. lol. mas acho que tá ok.

Se tiveres mais duvidas posta

Abraço
 
Última edição pelo moderador:
A minha ideia era usar a divisão por 10 para extrair o último dígito.

podes fazer uma string como tinhas dito e pões um ciclo para a correr. por exemplo.

Código:
for(i=1;i<=4;i++)
{soma+=ano[i];};

se é só para somar serve perfeitamente. não sei se tem erros de lógica, já nao mexo a algum tempo em c e c++. lol. mas acho que tá ok.

Se tiveres mais duvidas posta

Abraço

Usando uma string é preciso usar o atoi para converter os caracteres em inteiros.
 
Vou tentar fazer uma coisa simples para que percebas.

Vou assumir que a tua variavel ano que é do tipo inteiro com valor 2008.

Se dividires a tua variavel ano por 1000 vais obter o resultado 2 pois o resto é eliminado, ou seja:

ano/1000=2

agora so te faltam os 3 outros digitos que ate ficaram no resto da conta anterior mas para obteres o resto as para isso precisas do operador % o que fica:

ano%1000=8

se dividires o anterior por 100 vais ter 0 que é o teu segundo algarismo e assim sucessivamente depois de teres 4 variaveis com os 4 numeros é so somar.

Como querias uma ajuda e nao a resolução inteira acho que me vou ficar por aqui e deixar-te explorar. Caso não te safes é só perguntares.

Nao te ponhas a converter inteiros em chars e chars em inteiros que isso é so para quem ja percebe pelo menos 1 bocado disto.
 
MPalhas seguindo o teu prog para o ano 2008:

algarismo[0]=8;

algarismo[1]=0;

algarismo[2]=0;

algarismo[3]=0;

Se fiz bem as contas. . .

Se fizeres sempre %10 nunca vais achar o 2. . .

edit agora sim
 
Última edição:
primeira passagem:
2008 % 10 = 8
ano = 200

segunda passagem:
200 % 10 = 0
ano = 20

terceira passagem:
20 % 10 = 0
ano = 2

quarta passage:
2 % 10 = 2
ano = 0

parece-me correcto, mas como disse não foi testado

EDIT: não tinha visto o teu edit:p
 
já esperimentei o codigo do mpalhas e funciona, o problema é que quando vou a executar a soma funciona mas logo a seguir da-me erro e o programa feixa(aparece aquilo do enviar relatorio de erros).

o codigo de soma que fiz e este:
Código:
algarismo[0]+algarismo[1]+algarismo[2]+algarismo[3]

P.S. O meu compilador tambem da um aviso a dizer que a conversão pode perder digitos importantes.
 
A minha ideia era usar a divisão por 10 para extrair o último dígito.



Usando uma string é preciso usar o atoi para converter os caracteres em inteiros.

Yap. tens razão. esqueci-me completamente. mas tal como disse já nao pego em c e c++ a sério a algum tempo já. lol.
Obrigado pela correcção

Abraço
 
já esperimentei o codigo do mpalhas e funciona, o problema é que quando vou a executar a soma funciona mas logo a seguir da-me erro e o programa feixa(aparece aquilo do enviar relatorio de erros).

o codigo de soma que fiz e este:
Código:
algarismo[0]+algarismo[1]+algarismo[2]+algarismo[3]
P.S. O meu compilador tambem da um aviso a dizer que a conversão pode perder digitos importantes.


vê se tens as variaveis bem declaradas. algarismo tem que ser:
int algarismo[4];

põe também um getchar ou qualquer coisa que pare o programa logo a seguir a fazer a soma. pode ser que o erro esteja no código que vem a seguir e não na soma. eu testei e somou correctamente
 
vê se tens as variaveis bem declaradas. algarismo tem que ser:
int algarismo[4];

põe também um getchar ou qualquer coisa que pare o programa logo a seguir a fazer a soma. pode ser que o erro esteja no código que vem a seguir e não na soma. eu testei e somou correctamente

pois, esqueci-me disso.
 
Provavelmente já venho tarde, mas se calhar era mais simples fazer com um while:
Código:
int algarismo=0;
while(ano != 0){
     algarismo=algarismo+(ano%10);
     ano=ano/10;
}
Qualquer coisa tipo isto, não sei se tem alguma falha. Desta forma funcionava também quando o ano tivesse menos (ou mais :)) de 4 algarismos.
 
Última edição:
Back
Topo