Les chiffres d'un int

Fermé
mikegamer1 Messages postés 40 Date d'inscription mardi 31 juillet 2018 Statut Membre Dernière intervention 19 février 2019 - 25 août 2018 à 08:14
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 25 août 2018 à 11:46
Salut les amis!
SVP aidez moi j'ai un problème!
Je m'exerçais quand j'ai rencontré un exercice en C où on demande d'afficher les premier et dernier chiffres d'un nombre saisi par l'utilisateur.
Par exemple:
-si nbre=45098,
premier_chiffre=4 et dernier_chiffre=8
-si nbre=16,700
premier_chiffre=1 et dernier_chiffre=7.
Mais depuis peu j'y passe tout mon temps et j'y arrive pas. Si quelqu'un pourrait m'éclairer cela me ferai beaucoup plaisir.

2 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
25 août 2018 à 08:26
Bonjour,

Au vu de tes exemples, tu ne peux pas t'aider des maths, car 16700 donne 7 en dernier chiffre c'est arbitraire.
Le plus simple ici serait de convertir ton nombre en chaîne de caractères (avec
sprintf
par exemple).
Tu devras alors faire une boucle sur chaque caractère pour obtenir les chiffres que tu souhaites.
1
mikegamer1 Messages postés 40 Date d'inscription mardi 31 juillet 2018 Statut Membre Dernière intervention 19 février 2019
25 août 2018 à 08:31
Désolé je voulais mettre 16,7000
0
mikegamer1 Messages postés 40 Date d'inscription mardi 31 juillet 2018 Statut Membre Dernière intervention 19 février 2019
25 août 2018 à 08:39
Merci cela semble une bonne idée.
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
25 août 2018 à 11:46
Bonjour,
Le premier chiffre est :
int premier = n;  while ( premier >= 10 ) premier /= 10;
.
Le dernier chiffre est :
int dernier = n % 10;
.

Pour le cas 16,7000 je n'ai pas de solution car en C les nombres sont stockées en binaire et le nombre
float
le plus proche de 16,7000 est 16.700000762939453125, le dernier chiffre serait donc 5.
Si on veut le dernier chiffre non nul qui donnerait 7 pour 167000, on peut faire
int inn = n;
int dernierNonNul = n % 10;
while ( dernierNonNul == 0  &&  n != 0 ) {
   inn /= 10;
   dernierNonNul = inn % 10;
}
0