1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int somme(double n);
int main()
{
double multiple = 0;
int x = 0;
do
{
multiple = multiple + 2013; // La variable "multiple" prend successivement pour valeur les différents multiples de 2013
x = somme(multiple); // Le résulat x est la somme des chiffres du multiple en question
printf("%d avec %f\n", x, multiple); // On affiche x ainsi que le multiple qui lui correspond
} while (x != 2013); // La boucle continue tant que x est diffférent de 2013
printf("\n\n\n\n\nLe resultat est %f\n\n\n\n\n\n\n\n\n\n", multiple); // On affiche le résultat
return 0;
}
int somme (double n)
{
int /*compteur = 0,*/ d = 0, longueur_du_nombre = 250, n1 = 0, n2 = 0, n3 = 0, n4 = 0, n5 = 0, n6 = 0, n7 = 0, n8 = 0, n9 = 0;
double /*image = n,*/ image2 = n;
/*
do
{
compteur = image / 10;
longueur_du_nombre++;
} while (compteur > 1);
Je ne sais pas ce qui n'a pas fonctionné ici... c'était censé calculer la longueur de chaque nombre avant.. du coup, j'ai mis 250 un peu plus haut à la place de 0 */
while(longueur_du_nombre != 0)
{
d = image2/pow(10,longueur_du_nombre-1); // On divise le nombre par 10^250, puis 10^249..., puis 100 puis 10 puis 1
d = floor(d); // A chaque fois, on ne garde que la partie entière
d = d%10; // On récupère seulement le chiffre des entiers
switch(d) // Selon la valeur de d, autrement dit du chiffre, on incrémente l'une des variables de n1 à n9
{
case 1 :
n1++;
break;
case 2 :
n2++;
break;
case 3 :
n3++;
break;
case 4 :
n4++;
break;
case 5 :
n5++;
break;
case 6 :
n6++;
break;
case 7 :
n7++;
break;
case 8 :
n8++;
break;
case 9 :
n9++;
break;
}
longueur_du_nombre--; // On décrémente la variable "longueur du nombre" puis on recommence...jusqu'à ce que celle-ci soit égale à 0
}
return (n1) + (2*n2) + (3*n3) + (4*n4) + (5*n5) + (6*n6) + (7*n7) + (8*n8) + (9*n9); // On renvoie la somme des chiffres
} |
Partager