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
» select intégrés
addition d'entiers avec des réels Emptypar jjn4 Aujourd'hui à 18:33

» Aide de PANORAMIC
addition d'entiers avec des réels Emptypar leclode Aujourd'hui à 18:23

» PANORAMIC V 1
addition d'entiers avec des réels Emptypar Klaus Aujourd'hui à 9:53

» Je teste PANORAMIC V 1 beta 1
addition d'entiers avec des réels Emptypar Klaus Aujourd'hui à 9:52

» bouton dans autre form que 0
addition d'entiers avec des réels Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
addition d'entiers avec des réels Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
addition d'entiers avec des réels Emptypar Klaus Hier à 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
addition d'entiers avec des réels Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
addition d'entiers avec des réels Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
addition d'entiers avec des réels Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
addition d'entiers avec des réels Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
addition d'entiers avec des réels Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
addition d'entiers avec des réels Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
addition d'entiers avec des réels Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
addition d'entiers avec des réels Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

 

 addition d'entiers avec des réels

Aller en bas 
4 participants
AuteurMessage
bignono

bignono


Nombre de messages : 1127
Age : 66
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 : 5948
Age : 69
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 : 7004
Age : 73
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 : 7004
Age : 73
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 : 66
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 : 7004
Age : 73
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 : 66
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 : 7004
Age : 73
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 : 66
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: