[c++] j'ai honte de moi

j'ai honte de moi [c++] - C++ - Programmation

Marsh Posté le 16-10-2002 à 13:09:37    

essayé ca des que je rentre + de 13 ds la variable a saisir  ca plante  :fou:  alors que je voudrai que au moins mettre 100 voir 1000
 

Code :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. void main()
  4. {
  5. FILE* fe;
  6. int j,nbr;
  7. int a,b,a1,b1,c1;
  8. fe = fopen("fe.txt","w" );
  9. printf("horizontale: " );
  10. scanf("%d",&nbr);
  11. a= 3;
  12. b= 4;
  13. for(j=0;j<=nbr;j++)
  14. {
  15. a1=a*2;
  16. b1=b*2;
  17. c1=a1*b1;
  18. a=a1;
  19. b=b1;
  20. fprintf(fe,"%d \n",c1);
  21. }
  22.  
  23. printf("\nfichier copie appuie sur entrer pour fermer" );
  24. getchar() ;
  25. }

Reply

Marsh Posté le 16-10-2002 à 13:09:37   

Reply

Marsh Posté le 16-10-2002 à 13:12:24    

pourquoi tu dis [c++] alors que c'est du c ?

Reply

Marsh Posté le 16-10-2002 à 13:28:17    

lorill a écrit a écrit :

pourquoi tu dis [c++] alors que c'est du c ?




 
j'en c rien mais c pas la question !

Reply

Marsh Posté le 16-10-2002 à 13:54:49    

lorill a écrit a écrit :

pourquoi tu dis [c++] alors que c'est du c ?



:non: "void main" c'est pas du C

Reply

Marsh Posté le 16-10-2002 à 13:56:39    

bobuse a écrit a écrit :

 :non: "void main" c'est pas du C




nan, c'est du rien du tout. Mais ca l'aide pas, et j'ai pas de compilo sous la main pour tester quoi que ce soit.

Reply

Marsh Posté le 16-10-2002 à 13:57:33    

Je vois pas ou est le probleme, moi ca marche ... meme avec 100000.
Enfin en tout cas ça plante pas et ça crée bien le fichier ...

Reply

Marsh Posté le 16-10-2002 à 14:08:10    

bobuse a écrit a écrit :

Je vois pas ou est le probleme, moi ca marche ... meme avec 100000.
Enfin en tout cas ça plante pas et ça crée bien le fichier ...




 
et ca remplie le fichier de chiffre pas de 0 ???

Reply

Marsh Posté le 16-10-2002 à 14:10:41    

moi si je rentre 14 ca me donne ce ds le fichier fe :
 
48  
192  
768  
3072  
12288  
49152  
196608  
786432  
3145728  
12582912  
50331648  
201326592  
805306368  
-1073741824  
0  

Reply

Marsh Posté le 16-10-2002 à 14:22:34    

minours666 a écrit a écrit :

 
 
et ca remplie le fichier de chiffre pas de 0 ???




si y a des 0 à partir de 14, mais ça plante pas !
Maintenant si ton pb c'est les 0, ct pas tres clair ... je vais regarder ...

Reply

Marsh Posté le 16-10-2002 à 14:24:03    

ebn c juste que tu dépasse la capacité du type int.
Le dernier nombre avant 0 est négatif, déjà là c clair que ça dépasse ...

Reply

Marsh Posté le 16-10-2002 à 14:24:03   

Reply

Marsh Posté le 16-10-2002 à 14:24:28    

c quoi ktu veux faire ?

Reply

Marsh Posté le 16-10-2002 à 14:46:14    

deja moi je prefererai a*=2 et b*=2 (m'enfin c'est personnel)
 
et puis, t'es obliger d'utiliser le type int ?
 
merde, grillaid :D


Message édité par Fab52 le 16-10-2002 à 14:46:54

---------------
Attention aux tomics revelateurs. Quand on est bourre, faut pas moster  :D :) ;)
Reply

Marsh Posté le 16-10-2002 à 15:29:43    

Pas trop l'temps de tester, mais y'aurait pas un débordement de capacité dans l'air?  :heink: un int 32bits, ne peux pas stocker des valeurs supérieur à 2147483648 (4294967296 pour un entier non signé).
Si tu est sous Windows, tu peux utiliser le type __int64, qui va déjà te permettre d'utiliser des nombre un peu plus grand.  :)


---------------
In tartiflette, we trust!
Reply

Marsh Posté le 16-10-2002 à 15:31:32    

A j'oubliais: don't forget the fclose() !  ;)


Message édité par YungMakko le 16-10-2002 à 15:31:53

---------------
In tartiflette, we trust!
Reply

Marsh Posté le 16-10-2002 à 15:49:10    

Fab52 a écrit a écrit :

deja moi je prefererai a*=2 et b*=2 (m'enfin c'est personnel)
 
et puis, t'es obliger d'utiliser le type int ?
 
merde, grillaid :D




 
 
ouais je c mais j'ai toute essayé et j'ai oublié de remmettre ca
 
sinon ouais mon pb c les 0 , exact pour le fclose() ! , et justement j'avais bien compris que je debordais la capacité de int mais ca marche pas si je met double , __int64 et je c pas pk !


Message édité par minours666 le 16-10-2002 à 15:49:42
Reply

Marsh Posté le 16-10-2002 à 16:01:11    

Declare a,b,a1,b1,c1 en __int64,
et ensuite ecris:
 

Code :
  1. fprintf(fe,"%I64d \n",c1);


Avec 24, j'obtiens:
 
48  
192  
768  
3072  
12288  
49152  
196608  
786432  
3145728  
12582912  
50331648  
201326592  
805306368  
3221225472  
12884901888  
51539607552  
206158430208  
824633720832  
3298534883328  
13194139533312  
52776558133248  
211106232532992  
844424930131968  
3377699720527872  
13510798882111488  
 
ce qui est déjà pas mal!


---------------
In tartiflette, we trust!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed