FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
addition d'entiers avec des réels Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
addition d'entiers avec des réels Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
addition d'entiers avec des réels Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
addition d'entiers avec des réels Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
addition d'entiers avec des réels Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
addition d'entiers avec des réels Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
addition d'entiers avec des réels Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
addition d'entiers avec des réels Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
addition d'entiers avec des réels Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
addition d'entiers avec des réels Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
addition d'entiers avec des réels Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
addition d'entiers avec des réels Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
addition d'entiers avec des réels Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
addition d'entiers avec des réels Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
addition d'entiers avec des réels Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

 

 addition d'entiers avec des réels

Aller en bas 
4 participants
AuteurMessage
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

addition d'entiers avec des réels Empty
MessageSujet: addition d'entiers avec des réels   addition d'entiers avec des réels EmptySam 26 Jan 2013 - 20:01

Bonsoir à tous Smile
Je sais qu'en fouillant dans le forum, le problème d'addition d'entier ou division d'entier a été abordé et qu'il y avait un bug que Jack a résolu.
Mais il y a un truc qui me gène. Voyez le code suivant:
Code:
dim i%,e%,r:height 0,screen_y-40
list 1:left 1,50:width 1,150:height 1,150:print_target_is 1
r=0.5
repeat
  e%=r
  print "reel="+str$(r)+" donne l'entier :"+str$(e%):r=r+1
until r>8.5

print_target_is 0
i%=1
print i% : ' => 1
i%=i%+0.5
print i% : ' => 2
i%=i%+0.5
print i% : ' => 2
print

i%=2
print i% : ' => 2
i%=i%+0.5
print i% : ' => 2
i%=i%+0.5
print i% : ' => 2 => devrait donner 3?
print

i%=3
print i% : ' => 3
i%=i%+0.5
print i% : ' => 4
i%=i%+0.5
print i% : ' => 4
print

i%=4
print i% : ' => 4
i%=i%+0.5
print i% : ' => 4
i%=i%+0.5
print i% : ' => 4 => devrait donner 5?
print


i%=1
print i% : ' => 1
i%=i%+1.5
print i% : ' => 2
i%=i%+1.5
print i% : ' => 4
print

i%=2
print i% : ' => 2
i%=i%+1.5
print i% : ' => 4
i%=i%+1.5
print i% : ' => 6 => devrait donner 5?
print

i%=3
print i% : ' => 3
i%=i%+1.5
print i% : ' => 4
i%=i%+1.5
print i% : ' => 6
print

i%=4
print i% : ' => 4
i%=i%+1.5
print i% : ' => 6
i%=i%+1.5
print i% : ' => 8 =>devrait donner 7?
print

Où alors il y a quelque chose que je ne saisis pas avec les entiers et les réels!
Quelqu'un peut-il me donner une explication?
A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptySam 26 Jan 2013 - 21:11

Salut bignono

J'ai un peu de mal à suivre ton code; mais je pense que tu ne peux pas déclare 0.5 pour un entier%.

0.5 = valeur

1 = valeur% (obligatoirement un nombre sans décimale)

A+
Revenir en haut Aller en bas
Invité
Invité




addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptySam 26 Jan 2013 - 23:35

Bonsoir.
Je réponds rapidement, j'ai fait une recherche rapide, mais j'ai pas trouvé.
La question a déjà été posé.
Je me souviens de cette réponse (je ne pense pas me tromper), mais il me semble que Jack a répondu que la représentation était selon le choix des variables, mais que les calculs en interne étaient faite sur des réels pour une meilleurs précision.

En espérant que je suis dans le vrai avec une mémoire pas trop défaillante.
Bonsoir.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptySam 26 Jan 2013 - 23:50

Salut tout le monde.


Il n’y a pas de bug !! Mais il suffit de savoir !!
Panoramic , comme la plus part des langages, utilise ce qu’on appelle l’arrondi au pair le plus proche dit arrondi bancaire

Dans le problème qui se pose pour arrondir un réel en un entier, sachez qu’il existe plusieurs façons d’arrondir une valeur.

Arrondi vers le bas
Arrondi vers le haut
Arrondi par troncature
Arrondi par éloignement de zéro
Arrondi au plus proche
Arrondi au pair le plus proche (arrondi bancaire)
Arrondi à l’impair le plus proche
Arrondi stockastique
Arrondi alterné

********************************************************************************************
Voici un code contenant une SUB RoundUp() qui effectue l’arrondi vers le haut.
J'ai déjà posté cette SUB dans un autre topic
Code:
dim i, result%
height 0,620
list 1:top 1, 20 :left 1,50:width 1,150:height 1,550:print_target_is 1
' ----------------------
for i = 1 to 5 step 0.1
    RoundUp(i)
    if frac(i) = 0.5
        print i ; " RoundUp à : "; result%; " ======> "
    else
        print i ; " RoundUp à : "; result%
    end_if
next i
' -----------------------
list 2:top 2,20 :left 2,250:width 2,150:height 2,550 : print_target_is 2
for i = 1 to 5 step 0.1
    result% = i : print i ; " Arrondi à : "; result%
next i
' ------------------
end
' ******************************************************************************
' Arrondit un réel en un entier le plus proche
SUB RoundUp(x)
  result% = int(x) + int(frac(x)*2)
end_sub
' ******************************************************************************

Dans la liste à gauche les résultats de ma procédure (remarquez les valeurs devant la 2ème et la 4ème flèche).
Dans la liste à droite les résultats sont ceux qu'utilise PANORAMIC (Arrondi bancaire).

REMARQUE
Chaque type d'arrondi a son utilisation particulière.


Dernière édition par papydall le Dim 27 Jan 2013 - 4:21, édité 2 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptyDim 27 Jan 2013 - 1:51

Voici 2 SUBs :
La 1ère : Arrondi asymétrique vers le bas
La 2ème : Arrondi arithmétique asymétrique

Et un petit code pour les tester.

Code:
dim result, x, facteur
x = 123.456789
facteur = 1000: ' pour obtenir un entier, faire facteur = 1
' le nombre des zéros dans 'facteur' indique le nombre des chiffres
' après le point décimal

print " Arrondi asymétrique vers le bas" : print
print " ";x ; " =====>  ";
Round_Asym_Down(x,facteur)  : print result
print "-";x;" =====> ";
Round_Asym_Down(0-x,facteur) : print result : print

print " Arrondi arithmétique asymétrique" :print
print " ";x;" =====>  ";

Round_Asym_Arith(x,facteur) : print result
print "-";x;" =====> ";
Round_Asym_Arith(0-x,facteur) : print result : print

end
' *****************************************************************************
' Arrondi asymétrique vers le bas
SUB Round_Asym_Down(x,facteur)
    result = Int(X * facteur) / facteur
END_SUB
' ******************************************************************************
' Arrondi arithmétique asymétrique
SUB Round_Asym_Arith(X,facteur)
    result = Int(x *facteur +0.5)/facteur
END_SUB
' *****************************************************************************
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Francis-mr




Nombre de messages : 186
Date d'inscription : 26/11/2012

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptyDim 27 Jan 2013 - 8:51

Bonjour,
Moi aussi je me suis aperçu du problème qui n'en est pas vraiment un, car je m'en suis sorti avec la partie fractionnaire.
Merci à papydall pour ses explications, maintenant c'est beaucoup plus clair dans ma tête.
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptyDim 27 Jan 2013 - 11:37

Bonjour Papydall Smile et à tous les panoramiciens,
Bien compris ton explication, merci
Mais j'ai un autre code, qui fait donc un "arrondi bancaire":
Code:
dim i,e%,k(10):width 0,700:height 0,screen_y-38

list 1:left 1,0:width 1,150:height 1,height(0)-38:print_target_is 1:print " PAS DE 0.5 "
for i=1 to 10:k(i)=0:next i
for i=1 to 10 step 0.5
  e%=i:inc()
  print i;" => ";str$(e%)
next i
print:for i=2 to 9:print "égal à ";i;" => ";k(i);" fois":next i

list 2:left 2,175:width 2,150:height 2,height(0)-38:print_target_is 2:print " PAS DE 0.25 "
for i=1 to 10:k(i)=0:next i
for i=1 to 10 step 0.25
  e%=i:inc()
  print i;" => ";str$(e%)
next i
print:for i=2 to 9:print "égal à ";i;" => ";k(i);" fois":next i

list 3:left 3,350:width 3,150:height 3,height(0)-38:print_target_is 3:print " PAS DE 0.2 "
for i=1 to 10:k(i)=0:next i
for i=1 to 10 step 0.2
  e%=i:inc()
  print i;" => ";str$(e%)
next i
print:for i=2 to 9:print "égal à ";i;" => ";k(i);" fois":next i

list 4:left 4,525:width 4,150:height 4,height(0)-38:print_target_is 4:print " PAS DE 0.1 "
for i=1 to 10:k(i)=0:next i
for i=1 to 10 step 0.1
  e%=i:inc()
  print i;" => ";str$(e%)
next i
print:for i=2 to 9:print "égal à ";i;" => ";k(i);" fois":next i

end

sub inc()
k(e%)=k(e%)+1
end_sub
A+
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptyDim 27 Jan 2013 - 15:27

Salut Bignono, Francis-mr et tous les Panoramiciens.

Dans ton code, Bignono, en dessous de chaque liste, tu as indiqué les nombres des fois, ce qui donne :
3 fois ; 1 fois ; 3 fois ; 1 fois etc
5 fois ; 3 fois ; 5 fois ; 3 fois etc

Cette manière de faire des arrondis s’appelle l’arrondi alterné.
Elle est voulue et même souhaitée (en calcul statistique, bancaire, etc) car elle évite (autant que faire se peut) d’accumuler les erreurs d’arrondis.
La méthode consiste à arrondir alternativement une fois vers le haut et une autre fois vers le bas.

Voici mon code
Code:
dim i,n,entier%,somme_entier,somme_reel, moyenne_reel,moyenne_entier,pas
dim result%,somme_entier_up,moyenne_entier_up
dim epsilon : epsilon = power(10,0-5)
init(0.2): init(0.25) : init(0.5) : init(0.75)

print "***********************************************************************"
print " CONSTATATION :"
print " L'arrondi fait par PANORAMIC (arrondi alterné) donne un meilleur résultat"
print " en diminuant les accumulations des erreurs dùes aux arrondis" : print
print " Comparez les résultats donnés par moyenne des entiers (arrondi fait par PANORAMIC)et"
print " ceux donnés par moyenne des entiers UP(ma procédure:arrondi vers l'entier supérieur)"
end
' ------------------------------------------------------------------------------
SUB init(step_pas)
    somme_entier = 0 : somme_reel = 0 : somme_entier_up = 0 : moyenne_entier_up = 0
    n = 0 : pas = step_pas : calcul() : affiche()
END_sub
 ' -----------------------------------------------------------------------------
 ' Arrondit un réel en un entier le plus proche
SUB RoundUp(x)
  result% = int(x) + int(frac(x)*2)
end_sub
' ******************************************************************************
SUB affiche()
moyenne_entier = somme_entier / n
 moyenne_reel = somme_reel /n
 moyenne_entier_up = somme_entier_up/n
 print "Nombres de 1 à 10 avec un pas de "; str$(pas) : print
 print "Somme des entiers = "; somme_entier; "  "; "Moyenne des entiers = " ; moyenne_entier
 print "Somme des réels  = "; somme_reel  ; "  "; "Moyenne des réels  = "; moyenne_reel
 print "Somme des entiers UP = ";somme_entier_up;"  ";"Moyenne des entiers Up = ";moyenne_entier_up
 print "-----------------------------------------------------------------------"
 end_sub
 ' -----------------------------------------------------------------------------
 SUB calcul()
      for i = 1 to 10 + epsilon step pas
          n = n + 1
          entier% = i : somme_entier = somme_entier + entier%
          somme_reel = somme_reel + i
          RoundUp(i)
          somme_entier_up = somme_entier_up + result%
      next i
 end_sub
 ' *****************************************************************************
Ma conclusion :

L’arrondi fait par PANORAMIC (arrondi alterné) est l’un des meilleurs (si ce n’est pas le meilleur) !
Il donne des résultats qui se rapprochent le plus de la valeur exacte.
Mais on ne peut jamais connaître la valeur exacte d’une grandeur : seulement une valeur approchée.
Selon l’objectif à atteindre, on peut préférer un type d’arrondi plutôt qu’un autre.
Chacun peut parfaitement coder une procédure qui réalise un arrondi à sa convenance.

Pour des plus amples informations, regarder ici
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptyDim 27 Jan 2013 - 16:03

@Papydall,
Merci beaucoup de ta réponse et de tes explications. Je n'ai jamais étudié l'arrondi alterné, et maintenant je me rends compte qu'effectivement la méthode est excellente surtout pour arrondir des pourcentages afin qu'au final la totalité fasse 100%!
Merci encore, A+ Wink
PS: ton lien est très interressant et toutes les méthodes d'arrondis sont bien espliquées!
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptyDim 27 Jan 2013 - 16:11

bignono a écrit:
@Papydall,
.....
PS: ton lien est très interressant et toutes les méthodes d'arrondis sont bien espliquées!

On voit bien qu'on peut toujours espliquer les choses! addition d'entiers avec des réels 3d-moqueur-rire-3
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels EmptyDim 27 Jan 2013 - 20:48

Bien vu Papydall!
La prochaine fois je vais m'axpliquer à ne plus faire de faute de frappe! Que des fautes d'ortho-frappe! Razz
lol!
Revenir en haut Aller en bas
Contenu sponsorisé





addition d'entiers avec des réels Empty
MessageSujet: Re: addition d'entiers avec des réels   addition d'entiers avec des réels Empty

Revenir en haut Aller en bas
 
addition d'entiers avec des réels
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» réflexion sur addition de chaîne
» Entrer des nombres reels en notation scientifique
» Calcul des zéros réels et / ou complexes d’un polynôme
» Codage de la notation scientifique des nombres réels
» Entrer des nombres reels en notation scientifique

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: