Conversion
Fermé
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
-
18 nov. 2008 à 16:43
toto - 18 nov. 2008 à 17:24
toto - 18 nov. 2008 à 17:24
A voir également:
- Conversion
- Monnaie conversion - Télécharger - Banque & Budget
- Conversion ascii - Guide
- Conversion majuscule minuscule - Guide
- Conversion mb en go ✓ - Forum Mail
- Tableau conversion heure en centième ✓ - Forum Excel
7 réponses
Bonjour
L'explication, c'est que ton programme est mal fait.
Pour pouvoir te dire plus de détails, il faudrait que tu le montres.
La limite ne serait pas plutôt 32768 ?
L'explication, c'est que ton programme est mal fait.
Pour pouvoir te dire plus de détails, il faudrait que tu le montres.
La limite ne serait pas plutôt 32768 ?
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
18 nov. 2008 à 16:50
18 nov. 2008 à 16:50
mon programme est fonctionne correctement a des entiers <32000 ?
Un programme qui donne de réponses correctes dans certains cas n'est PAS un programme correct s'il en donne des mauvaises dans d'autres cas.
Tu ne trouves pas ça évident ?
Tu ne trouves pas ça évident ?
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
18 nov. 2008 à 16:59
18 nov. 2008 à 16:59
COMMENT JE CORRIGE MON PROGRAMME?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
18 nov. 2008 à 17:05
18 nov. 2008 à 17:05
#include <stdio.h>
void main()
{
int n,i,ch;
printf("donner un nombre";
scanf("%d",&n);
ch=0;
i=1;
while ( n/i !=0)
{ch=ch+1;
i=i*10;}
printf(""%d",ch);
}
void main()
{
int n,i,ch;
printf("donner un nombre";
scanf("%d",&n);
ch=0;
i=1;
while ( n/i !=0)
{ch=ch+1;
i=i*10;}
printf(""%d",ch);
}
Le problème c'est que tu travailles avec des entiers de 16 bits
quand tu es rendu à 5 chiffres, tu essayes ensuite une division par 100 000 pour tester s'il y a un sixième chiffre. Mais ta multiplication 10 000 par 10 ne te donne pas 100 000 (qui ne tient pas sur 16 bits) mais je ne sais quel nombre (tu peux le vérifier en faisant des print
Il serait beaucoup plus simple de diviser ton nombre par 10 à chaque tour, il n'y aurait jamais de débordement
quand tu es rendu à 5 chiffres, tu essayes ensuite une division par 100 000 pour tester s'il y a un sixième chiffre. Mais ta multiplication 10 000 par 10 ne te donne pas 100 000 (qui ne tient pas sur 16 bits) mais je ne sais quel nombre (tu peux le vérifier en faisant des print
Il serait beaucoup plus simple de diviser ton nombre par 10 à chaque tour, il n'y aurait jamais de débordement