Nombre trop grand ?

pandakill Messages postés 3 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 20 mars 2005 - 19 mars 2005 à 23:53
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 21 mars 2005 à 11:20
Bonjour à tous,
Voila j'ai récemment fait le programme suivant en C pour résoudre une solution, et malgré tous mes efforts je ne comprends pas pourquoi la condition IF ne marche plus à un certain moment càd lorsque x devient trop grand ..Aidez moi svp à comprendre :
#include <stdlib.h>
#include <stdio.h>

int main(){
int y,x,i,valeur ;
y = 1;
begin:
valeur = 395425559298;
y++;
x = y;
for (i = 1; i<= y;i++)
{
x+=y+i;
}
if(x < valeur){
printf("::%i::\n", x);
printf("%i\n", y);
goto begin;
}
printf("La solution est : %i", y);
getchar();
}
chez moi mon programme s'arrête pour x=288544545 qui est pourtant largement inférieur à 395425559298. Est-ce un problème de mémoire ?

5 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 mars 2005 à 00:41
Parce que
395425559298
ne tient pas sur 32 bits (tu dois avoir un warning à la compilation).
Utilise un __int64, ou un long long int sous gcc
0
pandakill Messages postés 3 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 20 mars 2005
20 mars 2005 à 02:38
Oh merci beaucoup je ne connaissait pas encore __int64 ( je débute on va dire), très utile à savoir çà.

Arf maintenant c'est bizarre çà ne s'arrête plus ...lol
Merci
0
pandakill Messages postés 3 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 20 mars 2005
20 mars 2005 à 03:06
arff... que ce soit avec long long int ou __int64, je ne peux qu'obtenir des nombres a 9 chiffres..et le mien en fait 12...
Bon bah je crois que c'est fichu...
Merci quand même
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 mars 2005 à 09:39
Ces nombre étant codés sur 64 bits, tu as assez de chiffres. Par contre
pour les afficher c'est différent (ce n'est pas %d, mais %ll pour long
long et pour __int64 je ne sais plus).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
21 mars 2005 à 11:20
tu peux utiliser une lib grd nombre

http://www.cppfrance.com/code.aspx?ID=25896

par exemple



à part ça , pense à vérifier les limites de tes nombres et les opérations



limits.h sera une premiere piste

++

Nono.
0
Rejoignez-nous