Compter le nombre de chiffres dans un nombre
Fermé
Utilisateur anonyme
-
20 oct. 2018 à 12:37
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 22 oct. 2018 à 13:06
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 22 oct. 2018 à 13:06
A voir également:
- Compter le nombre de chiffres dans un nombre
- Nombre facile - Télécharger - Outils professionnels
- Nombre de combinaison possible avec 6 chiffres de 0 à 9 - Forum loisirs/vie pratique
- Créer un compte gmail - Guide
- Excel compter le nombre de caractères spécifique dans une cellule ✓ - Forum Excel
- Créer un compte google - Guide
5 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
20 oct. 2018 à 13:09
20 oct. 2018 à 13:09
Bonjour,
Tous les types de données sont limitées en taille, donc si ton nombre est trop grand il ne peut pas être représenté avec un int, tu peux essayer avec d'autres types de données, mais tu seras toujours limité à un moment.
Voir les limites dans https://forums.commentcamarche.net/forum/affich-37622105-langage-c-les-types-de-donnees
Tous les types de données sont limitées en taille, donc si ton nombre est trop grand il ne peut pas être représenté avec un int, tu peux essayer avec d'autres types de données, mais tu seras toujours limité à un moment.
Voir les limites dans https://forums.commentcamarche.net/forum/affich-37622105-langage-c-les-types-de-donnees
yg_be
Messages postés
23313
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 novembre 2024
Ambassadeur
1 552
20 oct. 2018 à 12:46
20 oct. 2018 à 12:46
bonjour, "il refuse": coup de poing, message d'erreur, résultat incorrect?
peux-tu partager ce que le programme affiche pour a, b, et c, ainsi que ce que tu souhaites qu'il affiche?
en passant: je pense plus propre de spécifier le type du paramètre b dans
peux-tu partager ce que le programme affiche pour a, b, et c, ainsi que ce que tu souhaites qu'il affiche?
en passant: je pense plus propre de spécifier le type du paramètre b dans
int compteur(b)
aure2015
Messages postés
93
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
30 mai 2020
5
Modifié le 20 oct. 2018 à 17:12
Modifié le 20 oct. 2018 à 17:12
Salut!
Aucune classe d'entier n'acceptera 100 chiffres!
Par contre, tu peux utiliser les double qui accepteront peut-être!
Bonne chance!
Aucune classe d'entier n'acceptera 100 chiffres!
Par contre, tu peux utiliser les double qui accepteront peut-être!
Bonne chance!
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
20 oct. 2018 à 16:47
20 oct. 2018 à 16:47
Bonjour,
Si on compte l'ensemble des particules de l'Univers on a besoin d'un nombre d'environ 80 chiffres. A quoi peut bien servir un nombre de 100 chiffres?
En C, le plus grand des types permettant de stocker tous les chiffres d'un nombre est le type
Si on compte l'ensemble des particules de l'Univers on a besoin d'un nombre d'environ 80 chiffres. A quoi peut bien servir un nombre de 100 chiffres?
En C, le plus grand des types permettant de stocker tous les chiffres d'un nombre est le type
unsigned long longqui atteint 2^64-1 c'est à dire un nombre ridicule 18446744073709551615 qui ne fait que 20 chiffres. Pour aller au delà il faut faire appel à une bibliothèque pour les grands nombres, ça m'étonnerais que le prof s'attende à l'utilisation d'une bibliothèque externe.
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
20 oct. 2018 à 17:50
20 oct. 2018 à 17:50
"A quoi peut bien servir un nombre de 100 chiffres?"
En cryptographie par exemple, on manipule des nombres de plusieurs centaines de chiffres.
Exemple : une clé RSA à 2048 bits (taille recommandée par l'ANSII) représente un nombre de 600 chiffres.
Remarque : depuis 2016 on connaît 22 459 157 718 361 chiffres pour π...
En cryptographie par exemple, on manipule des nombres de plusieurs centaines de chiffres.
Exemple : une clé RSA à 2048 bits (taille recommandée par l'ANSII) représente un nombre de 600 chiffres.
Remarque : depuis 2016 on connaît 22 459 157 718 361 chiffres pour π...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 22 oct. 2018 à 12:16
Modifié le 22 oct. 2018 à 12:16
Bonjour Titoufou89,
ah... malheureusement notre prof ne veut pas qu'on utilise les chaines de caractères
Je suppose que cela veut dire que non seulement tu ne peux pas lire une ligne avec fgets, mais que tu ne peux pas non plus utiliser scanf avec %s.
Ensuite, tu parles de "nombres" et de "chiffres", sans préciser si tu dois ou non traiter les nombres décimaux, mais en revanche ton code concerne des nombres entiers.
Donc, bien que tu ne donnes pas entièrement les éléments de ton problème, il semblerait que tu doives obligatoirement utiliser scanf avec %d (ou un autre spécificateur entier) et pouvoir compter le nombre de chiffres tapés en supportant jusqu'à 100 chiffres.
Tu as trouvé une méthode pour compter le nombre de chiffres.
Il te reste à savoir comment faire pour saucissonner ta lecture en plusieurs fois pour tenir compte des limitations des types entiers standard.
Pour cela, il te suffit d'utiliser un spécificateur de taille avec scanf et de répéter la lecture ainsi limitée tant qu'il y a des données dans le flux stdin et que l'on est dans les limites des 100 chiffres maximum à gérer.
http://www.cplusplus.com/reference/cstdio/scanf/
Par exemple :
En supposant qu'un utilisateur tape un nombre de 9 chiffres,
La difficulté est ensuite de savoir quand s'arrêter de lire stdin. Pour cela, il faut savoir s'il reste quelque chose dans stdin à "consommer". Je te laisse rechercher cette partie :-)
Note que les limites de nombres pouvant être représentés en tant qu'entiers pour un compilateur C donné sont accessibles dans l'entête
http://www.cplusplus.com/reference/climits/
et que tu devrais sans doutes utiliser cette information (pas celle qui est en colonne de droite, qui est la valeur minimale à supporter selon le standard, mais celle indiquée par
Dal
ah... malheureusement notre prof ne veut pas qu'on utilise les chaines de caractères
Je suppose que cela veut dire que non seulement tu ne peux pas lire une ligne avec fgets, mais que tu ne peux pas non plus utiliser scanf avec %s.
Ensuite, tu parles de "nombres" et de "chiffres", sans préciser si tu dois ou non traiter les nombres décimaux, mais en revanche ton code concerne des nombres entiers.
Donc, bien que tu ne donnes pas entièrement les éléments de ton problème, il semblerait que tu doives obligatoirement utiliser scanf avec %d (ou un autre spécificateur entier) et pouvoir compter le nombre de chiffres tapés en supportant jusqu'à 100 chiffres.
Tu as trouvé une méthode pour compter le nombre de chiffres.
Il te reste à savoir comment faire pour saucissonner ta lecture en plusieurs fois pour tenir compte des limitations des types entiers standard.
Pour cela, il te suffit d'utiliser un spécificateur de taille avec scanf et de répéter la lecture ainsi limitée tant qu'il y a des données dans le flux stdin et que l'on est dans les limites des 100 chiffres maximum à gérer.
http://www.cplusplus.com/reference/cstdio/scanf/
Par exemple :
int nombre1; scanf("%5d", &nombre1);
En supposant qu'un utilisateur tape un nombre de 9 chiffres,
scanfva consommer 5 caractères dans stdin et interpréter le résultat en le stockant en tant qu'entier dans
nombre1. Si tu répètes
scanf("%5d", &nombre2);, le programme consommera (jusqu'à) 5 caractères suivants disponibles dans stdin en tant qu'entier dans
nombre2, etc.
La difficulté est ensuite de savoir quand s'arrêter de lire stdin. Pour cela, il faut savoir s'il reste quelque chose dans stdin à "consommer". Je te laisse rechercher cette partie :-)
Note que les limites de nombres pouvant être représentés en tant qu'entiers pour un compilateur C donné sont accessibles dans l'entête
<limits.h>
http://www.cplusplus.com/reference/climits/
et que tu devrais sans doutes utiliser cette information (pas celle qui est en colonne de droite, qui est la valeur minimale à supporter selon le standard, mais celle indiquée par
<limits.h>) pour dimensionner correctement tes blocs d'entiers à récupérer.
Dal
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 22 oct. 2018 à 13:07
Modifié le 22 oct. 2018 à 13:07
note aussi que ta fonction
compteurdevrait avoir un prototype
int compteur(int b)et qu'elle ne compte correctement que le nombre de chiffres de nombres entiers positifs et non nuls.
20 oct. 2018 à 13:18
ca risque de compliquer le travail ! je dois compter pour des nombres pouvant comporter jusqu'à 100 chiffres !
pour résumer rapidement je souhaite ranger chaque chiffre du nombre dans une "case" d'un tableau donc je commence par chercher la taille que devra faire ce tableau... là je dois bien avouer que je n'ai aucune idée de comment faire...
20 oct. 2018 à 13:23
20 oct. 2018 à 13:33
exemple :
for (i=0, i<100, i++)
{
if (tableau[i] == 'a') // 'a' sera la balise
{
break;
}
else tableau[i] = (il faut que je trouve un moyen de "casser le nombre en chiffres");
}