Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1251 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]Algorithme de calcul de la limite de la somme des entiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA]Algorithme de calcul de la limite de la somme des entiers

n°1638989
antisarko
Posté le 08-11-2007 à 12:23:47  profilanswer
 

bonjour ,
 
alors j aimerai savoir deja quelle est la limite pour les entiers integer en java??Quand on dit 4 octets , comment j arrive au calcul en decimal??
bref , alors voici mon algo en prenant pour limite 2147483647 (pourtant logiquement c 2.10e32??)
 
 

Code :
  1. public class Limitesomme {
  2.    
  3.  
  4.     public static void main(String [] args) {
  5.        
  6.     int Sommetotal,sommeinter ,i,limite;
  7.     boolean boucle;
  8. //Sommetotal est la limite de la valeur entier en java  
  9.     Sommetotal  = 2147483647;
  10.     i=0;
  11.     sommeinter =0;
  12.     limite =0;
  13.     boucle =true;
  14.    
  15.    
  16.         while (boucle == true){
  17.         i=i+1;
  18.         sommeinter=sommeinter+i;
  19.        
  20.             if (sommeinter==Sommetotal){
  21.                 boucle = false;
  22.                 System.out.println("limite"+i);
  23.                 System.out.println(Sommetotal);
  24.              
  25.             }
  26.        
  27.        
  28.         }
  29.     }
  30.    
  31. }


 
merci

mood
Publicité
Posté le 08-11-2007 à 12:23:47  profilanswer
 

n°1639003
moustik510
Enfin en travaux !
Posté le 08-11-2007 à 12:30:12  profilanswer
 

antisarko a écrit :

Sommetotal  = 2147483647;
 
if (sommeinter==Sommetotal){


Dans ton algo tu considères qu'a la fin du sommeinter vaudra 2147483647. Ce qui n'est pas certain.
Il faut que tu trouves quoi, le sommeinter le grand possible sans qu'il dépasse Sommetotal ?
 

n°1639044
antisarko
Posté le 08-11-2007 à 13:11:29  profilanswer
 

salut ,  
 
merci de ta réponse rapide il faut que je determine le plus grand nombre qui permet de calculer la somme maximale des entiers integer .Il faut donc que je trouve i je pense , pourtant l algo marche quand je rentre une petite valeur a la place de la somme total.or je tombe sur une valeur negative  :pt1cable:  
 
L algo fait la somme des entiers en fait :
exple j ai Sommetotal=15;
 
donc i =5
5+4+3+2+1 =15
 
j espere que c est assez clair  
 
merci

n°1639107
moustik510
Enfin en travaux !
Posté le 08-11-2007 à 14:07:28  profilanswer
 


Si t'essaies d'affecter un nombre trop grand à un interger, ça va lancer une exception non ?
Donc moi je bouclerais à l'infini tant que tu peux faire ton sommeinter+=i.
Quand le nombre deviendra trop grand, une exception sera levée, tu récupères le précédent résultat.


Message édité par moustik510 le 08-11-2007 à 14:07:46
n°1639122
antisarko
Posté le 08-11-2007 à 14:33:22  profilanswer
 

salut ,
 
je ne vois pas ce que tu veux dire , tu pourrai me le mettre en code ??je n arrive pas a saisir la .
 
merci

n°1639125
TheRom_S
Posté le 08-11-2007 à 14:36:08  profilanswer
 

heu, tu es sûr de devoir utiliser cet algo ?
pasque la somme S des entiers jusqu'à i, ça donne S=i * (i+1) / 2 donc c'est sûrement plus rapide trouver en résolvant l'équation du 2ème degré ...
 
edit : et logiquement, i = (-1 + sqrt(1 + 8*S)) / 2
edit2 : surtout qu'avec ton exemple, ça donne 65535.5, ce qui n'est pas entier et donc ton algo il boucle jusqu'à l'infini ...

Message cité 1 fois
Message édité par TheRom_S le 08-11-2007 à 14:46:54

---------------
The Rom's, à votre service
n°1639169
MagicBuzz
Posté le 08-11-2007 à 14:52:20  profilanswer
 

pour la valeur maximale d'un type, en java, y'a pas un truc genre :
 
int Maximum = int.MaxValue;
 
En .NET en tout cas, c'est le cas... Ca évite de se retrouver à planter comme un con le jour où ton appli tourne sur un processeur qui n'est pas 32 bits...

n°1639176
MagicBuzz
Posté le 08-11-2007 à 14:55:11  profilanswer
 

Ensuite, ton test est faux.
 
Parceque tu ne vas pas forcément passer par cette valeur.
 
Genre, ton max, c'est 17.
pour i = 5, on a 15
pour i = 6, on a 21
=> ben tu peux toujours attendre pour tomber sur 17... (c'est ce qui t'arrive)
 
donc tu dois faire :
 
if (masomme >= MaxValue - i)
=> si c'est vrai, alors la prochaine incrémentation de i va faire dépasser la valeur maximale


Message édité par MagicBuzz le 08-11-2007 à 14:55:18
n°1639179
TheRom_S
Posté le 08-11-2007 à 14:56:35  profilanswer
 

oui il y a très exactement Integer.MAX_VALUE et ça concerne effectivement les int (pas seulement les Integer)


---------------
The Rom's, à votre service
n°1639207
moustik510
Enfin en travaux !
Posté le 08-11-2007 à 15:04:26  profilanswer
 

TheRom_S a écrit :

heu, tu es sûr de devoir utiliser cet algo ?
pasque la somme S des entiers jusqu'à i, ça donne S=i * (i+1) / 2 donc c'est sûrement plus rapide trouver en résolvant l'équation du 2ème degré ...
 
edit : et logiquement, i = (-1 + sqrt(1 + 8*S)) / 2
edit2 : surtout qu'avec ton exemple, ça donne 65535.5, ce qui n'est pas entier et donc ton algo il boucle jusqu'à l'infini ...


En fait ce qu'il tentait de faire revient à trouver la valeur de i avec les contraintes suivantes
S=i * (i+1) / 2
S le plus grand possible mais <= Sommetotal (2147483647)
 
int.MaxValue; (ça marche en Java ?) donnerais le nombre exact de Sommetotal mais le résultat ne sera pas celui attendu.
Exemple : si le nombre max était 9, ça ne serait pas la somme des entiers de 1 à i.
Si i=3 : 1+2+3 = 6
S i= 4 : somme = 10
Le résultat attendu serait alors i=3.
 
Je me trompe ?
 
[edit]Je répond trop tard


Message édité par moustik510 le 08-11-2007 à 15:05:18
mood
Publicité
Posté le 08-11-2007 à 15:04:26  profilanswer
 

n°1642283
antisarko
Posté le 13-11-2007 à 15:38:29  profilanswer
 

bonjour ,
 
alors j ai reussi mais le probleme est pour un long comment je donne la valeur maximale???
 
j ai testé int.MaxValue sous java pour un integer ca marche pas , quelle est la syntaxe precise?
merci

n°1642488
TheRom_S
Posté le 13-11-2007 à 22:45:36  profilanswer
 

TheRom_S a écrit :

oui il y a très exactement Integer.MAX_VALUE et ça concerne effectivement les int (pas seulement les Integer)


 
Salut, apprends à lire, merci :o
 
ps : rien ne t'empêche de chercher par toi même, la javadoc c'est pas fait pour les chiens

Message cité 1 fois
Message édité par TheRom_S le 13-11-2007 à 22:46:32

---------------
The Rom's, à votre service
n°1642493
antisarko
Posté le 13-11-2007 à 23:05:38  profilanswer
 

TheRom_S a écrit :


 
Salut, apprends à lire, merci :o
 
ps : rien ne t'empêche de chercher par toi même, la javadoc c'est pas fait pour les chiens


salut ,
 
Ecoute , tu devrais apprendre à t'exprimer , je te trouve trop agressif , d autant plus que je ne t ai rien demandé.Tu n'as pas envie de repondre , ne reponds pas , je ne te force pas .
Si c 'est pour lire ça , tu aurais du eviter d intervenir.
la politesse ce n'est pas non plus fait pour les chiens  
 
merci

n°1642516
MagicBuzz
Posté le 14-11-2007 à 01:29:49  profilanswer
 

Ouais m'enfin autant je suis pas partisant des tons agressifs, autant c'est vrai qu'il t'avait un peu déjà donné la réponse... Et que je me suis retenu de t'envoyer moi-même dans la doc : j'ai suggéré, en indiquant que c'était du C#, donc pas du Java, qu'il devait y avoir une constante dispo quelque part, certainement sous forme de membre statique d'une class. Après confirmation c'était pas vraiment compliqué de chercher dans la doc (ou jouer avec l'intellisense de ton GUI).
 
Enfin bref, t'as ta réponse pour la seconde fois, ainsi que des suggestions pour améliorer ton algo : débat clos, pas la peine d'envenimer les choses.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]Algorithme de calcul de la limite de la somme des entiers

 

Sujets relatifs
informations sur les Java Carddeverouiller un fichier.. [java, jython]
[J2ME]Transfert jeu java vers portable[debutant] java:NullPointerException
[JavaCC] Modélisation UML d'une grammaire BNF décrite en JavaDe java à class ? Quelle démarche ?
somme des noeuds d'un arbrepb "return" méthode java
java.net.SocketTimeOutException: Read Timed outManipuler une variable Java dans du code Javascript
Plus de sujets relatifs à : [JAVA]Algorithme de calcul de la limite de la somme des entiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR