LANGAGE C
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:57
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 18 nov. 2008 à 17:42
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 18 nov. 2008 à 17:42
A voir également:
- LANGAGE C
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Débuter langage batch windows - Guide
8 réponses
Le problème vient du débordement de la multiplication de i par 10 à chaque tour.
Il vaudrait mieux diviser n, on ne déborderait jamais
Il vaudrait mieux diviser n, on ne déborderait jamais
kill4m
Messages postés
224
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
28 janvier 2012
26
18 nov. 2008 à 17:00
18 nov. 2008 à 17:00
mais ton code plz, le problème doit venir d'ailleur car entier -> int va jusqu'a 32767 je crois donc c'est autre chose
Droopy_
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
25
18 nov. 2008 à 17:04
18 nov. 2008 à 17:04
Bonjour,
Et tu le fais comment ton calcul du nombre de chiffres ?
Il faut être plus précis...
J'ai deux méthodes en tête, sans chercher :
Utiliser une fonction Logarithme base 10, qui te donne directement ton résultat (à plus ou moins 1, je crois)
ou un truc du genre :
count=0;
do
{
count++;
nb /= 10;
} while (nb);
Ou plus court, mais pas forcement plus propre :
count=1;
while (nb/=10) count++;
Et tu le fais comment ton calcul du nombre de chiffres ?
Il faut être plus précis...
J'ai deux méthodes en tête, sans chercher :
Utiliser une fonction Logarithme base 10, qui te donne directement ton résultat (à plus ou moins 1, je crois)
ou un truc du genre :
count=0;
do
{
count++;
nb /= 10;
} while (nb);
Ou plus court, mais pas forcement plus propre :
count=1;
while (nb/=10) count++;
kill4m
Messages postés
224
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
28 janvier 2012
26
18 nov. 2008 à 17:10
18 nov. 2008 à 17:10
sans le code pas facile de l'aider ....
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:11
18 nov. 2008 à 17:11
je crois qu'un entier dépasse 32000 se convertir son code ASCI SUR UN NOMBRE DE BIT PLUS QU'UN ENTIER <3200
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:13
18 nov. 2008 à 17:13
voici le code:
#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);
}
#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);
}
kill4m
Messages postés
224
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
28 janvier 2012
26
18 nov. 2008 à 17:17
18 nov. 2008 à 17:17
essaye de remplacer :while ( n/i !=0)
par while ( (double)n/i !=0)
par while ( (double)n/i !=0)
kill4m
Messages postés
224
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
28 janvier 2012
26
18 nov. 2008 à 17:21
18 nov. 2008 à 17:21
enfaite non sa marchera pas ce que je viens de dire, mais a mon avis le problème vient du fait que la division n/i qui sont tous les 2 des int donne un résultat à virgule qui ne peut pas être stocker dans un int.
hors la variable temporaire de stockage sera un int..
hors la variable temporaire de stockage sera un int..
pyschopathe
Messages postés
1974
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
135
18 nov. 2008 à 17:42
18 nov. 2008 à 17:42
Tu auras une conversion en int, pas de problème à ce niveau...