cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 8 déc. 2003 à 01:17
Salut,
En supposant que ton nombre soit dans une chaine de caractere:
Dans une boucle, tu avances sur la chaine en aditionnant que les chiffres dont leur index est pair.
nb[] = "123467";
int total = 0;
for(int i=0; nb[i]; i++) {
if(!(i%2)) total += nb[i]-'0';
}
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 8 déc. 2003 à 10:51
Salut,
Dans ce cas, tu extrais tout les chiffres de ton nombre dans un tableau d'int (avec des divisions par 10 et des %10), ensuite meme technique que pour la chaine, tu ne prend que les nombres du tableau dont les index sont pairs.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 8 déc. 2003 à 12:52
Salut Garslouche,
Ta fonction additionne les chiffres de rang impairs en partant de la droite, alors qu'il faut partir de la gauche.
Resultat, si un le nombre a un nombre de chiffre impair, ca marche, mais si le nombre de chiffre est pair ca ne marche pas.
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 8 déc. 2003 à 15:37
aardman, je n'y ai effectivement pas fait attention mais rien ne dit qu'il faut commencer par la gauche. Pourquoi le premier chiffre serait le plus grand ?
Mais si c'et effectivement le cas ça s'adapte assez facilement...
int totalImpairs(int N)
{
total = 0;
if ((int)(log10(N))%2)
N=N/10;
while (N>0)
{
total += N%10;
N = N/100;
}
return total;
}
Et il faudra ajouter #include "math.h" en début de fichier
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 8 déc. 2003 à 16:49
Ah? 'faut pas s'enerver...
Euh...bah je viens de le tester pour voir...
avec 1234567 et 12345678 j'obtiens 16 (1+3+5+7 = 16)
alors qu'avec les pairs j'obtiendrais 2+4+6 = 12 et 2+4+6+8=20
A moins que les positions ne soient indexées en commençant à 0.
à ce moment là il faudrait encore modifier un peu...et remplacer
if ((int)(log10(N))%2)
par
if ((int)(log10(N))%2 == 0)
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 8 déc. 2003 à 17:17
Salut,
Dans l'exemple que fourni djkill55 tout en haut de cette page, il a commencé a addtionné les rangs impairs a partir de la gauche, voila pourquoi je pensais qu'il fallais commencer par la gauche.