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.
Opérateurs arithmétiques Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Opérateurs arithmétiques Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Opérateurs arithmétiques Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Opérateurs arithmétiques Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Opérateurs arithmétiques Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Opérateurs arithmétiques Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Opérateurs arithmétiques Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Opérateurs arithmétiques Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Opérateurs arithmétiques Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Opérateurs arithmétiques Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Opérateurs arithmétiques Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Opérateurs arithmétiques Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Opérateurs arithmétiques Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Opérateurs arithmétiques Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Opérateurs arithmétiques 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
Le deal à ne pas rater :
Boutique Nike : -25% dès 50€ sur TOUT le site Nike avec le code ...
Voir le deal

 

 Opérateurs arithmétiques

Aller en bas 
3 participants
AuteurMessage
ANDRES André




Nombre de messages : 3
Date d'inscription : 27/09/2009

Opérateurs arithmétiques Empty
MessageSujet: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMar 29 Sep 2009 - 9:17

confused
Pour une division on emploie le signe (/)
Pour connaître le reste d'une division on employait (MOD).
Sur Panoramic que doit-on faire pour trouver le reste ?
Revenir en haut Aller en bas
Invité
Invité




Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMar 29 Sep 2009 - 10:17

Bonjour ANDRES André
la commande pour trouver le reste est FRAC()
Code:

dim a,b
a=123.45 /2
print "a=";str$(a)
print "reste:";frac(a)
par contre le résultat est décimal, ainsi dans l'exemple on voit:
a=61.725
reste:0.72500000000001 je n'est pas compté le nb de 0
c'est vrai que c'est pas très pratique, on a le résulta plus simple avec:
Code:

print a-int(a)
qui donne 0.725
il y a une façon de procéder qui n'est pas pratique, ou faire une routine pour le résultat:
Code:
print val(mid$( str$(a-int(a)),3,len(str$(a-int(a)))-1))
qui donne ici:725 comme nombre, pour un string, on retire val( ) soit:
Code:

print mid$( str$(a-int(a)),3,len(str$(a-int(a)))-1)
qui donne aussi 725, mais là, ce n'est que des caractères. Mais je ne suis pas math, si d'autres ont mieux!
A+
Revenir en haut Aller en bas
ANDRES André




Nombre de messages : 3
Date d'inscription : 27/09/2009

Opérateurs arithmétiques Empty
MessageSujet: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMar 29 Sep 2009 - 15:59

cheers
Je vous remercie beaucoup pour votre réponse. Je suis tout nouveau dans Pan. Je me doutais un peu pour Frac(), mais ne savais pas comment l'employer exactement.
Encore merci et bien sincèrement.
Revenir en haut Aller en bas
Invité
Invité




Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMar 29 Sep 2009 - 16:44

De rien, je ne l'avais jamais employé, puisque cela fait 1mois1/2 que je suis sur panoramic, je savais que je l'avais vu, mais franchement, elle n'est pas pratique. Normalement, si je me souvient bien, lorsqu'on a une instruction en basic, donnant le reste d'une division, on a un nombre entier. avoir un résultat décimal, ne facilite pas les choses.Je ne sais pas ce qu'en pense les autres, il faudrait voir si Jack accepterait de modifier son instruction. Le problème est la compatibilité avec des programmes que d'autre ont fait avant. Peut-être y a t-il une autre possibilité. J'avais essayé avec ça:
Code:
dim a,b

a=145.01
b=a-int(a)
print b," partie décimale:";b*power( 10,len(str$(b))-2)
Mais cela donne la même chose, sauf et là il y a erreur, si le 1er chiffre après la virgule est un zéro. Sur cet exemple, si une personne trouve une autre possibilité, vu mon faible niveau en math. L'instruction avec mid$ peut-être remplacée par:
Code:
print right$( str$(a-int(a)),len(str$(a-int(a)))-2)
Et là je viens de voire une erreur et ça pose de nouveau un problème, parce que le résultat est juste s'il s'agit d'une chaine, mais faux si on prends la valeur de la chaine (c'est vrai aussi pour ce que j'ai déjà édité la fois d'avant). Dès qu'il y a un zéro au départ, il y a un décalage dans la valeur de la chaine
exemple:
a=12.0123 le reste est 0123, la valeur est: 123.
Je vois ça maintenant, ça dépend de ce que tu veux faire avec le reste, en tout cas, je viens de remarquer qu'on ne peut considérer que cela est juste. Je laisse les autres venir à ton aide.Si tu fais un programme, et tu sais le nombre de décimal que tu utilises, alors multiplie tout par 10,100,1000, et affiche le résultat en divisant par 10,100,1000,....
Cette fois-ci je suis hors course.
Je ne retire rien de tout ce que je viens d'écrire, pour voir le cheminement qui m'a amené à cette conclusion, et que d'autre ne parte pas sur la même erreur.
A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMar 29 Sep 2009 - 17:03

Personnellement je considère que c'est un (petit) bug de Panoramic, en reprenant l'exemple de Cosmos
Code:
a = 123.45
b = 2
print a/b: rem -> = 61.725
print frac(a/b): rem -> = 0.725000000000001 au lieu de 0.725
rem ...
a= 123.45678
b = 2
print a/b: rem -> = 61.72839, correct
print frac(a/b); rem -> = 0.728389999999997, au lieu de 0.72839
il y a une conversion qui se fait mal.
Sinon, c'est normal que Frac donne la partie fractionnaire, à l'utilisateur de la convertir suivant ce qu'il veut en faire.

En QBasic, le MOD renvoie un nombre entier, arrondi au plus près:
a/b donne 61.725
a MOD b donne 1 (c'est à dire 0,725 arrondi à 1)
donc pratiquement à n'utiliser qu'avec des nombres entiers.
Revenir en haut Aller en bas
ANDRES André




Nombre de messages : 3
Date d'inscription : 27/09/2009

Opérateurs arithmétiques Empty
MessageSujet: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMar 29 Sep 2009 - 17:37

Encore merci.
Voilà une dizaine d'années j'avais créé un programme pour trouver la clef de tous les comptes. J'aurais aimé le retranscrire sur PAN pour m'habituer à cette nouvelle programmation.
La syntaxe de MOD était: X MOD Y
l'opération MOD renvoie le reste de la division entière de X par Y. Ce reste est lui mème un entier.
Ex.: 12345/2 = 6172 et le reste est égal à 1.
Pour suivre l'exemple que tu m'as donné:
12345/2 = 6172.5 et le reste est égal à 0.5
Il m'est donc nécessaire de trouver le 1 dans cet ex..
Voilà, si tu trouves............
Bonne soirée.
Revenir en haut Aller en bas
Invité
Invité




Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMar 29 Sep 2009 - 17:57

Trouve tu la solution avec ceci:
Code:
dim a,b
repeat
  input "nombre svp:";a
  print "a-int(a)=";a-int(a)
  print " int( frac(a)*10  +.5)  :";int(frac(a)*10  +.5)
  print " int( frac(a)*100 +.05 ):";int(frac(a)*100 +.05)
  print " int( frac(a)*1000+.005):";int(frac(a)*1000+.005)
  print
until a=0
terminate
Est-ce que cela te convient?
A+
Tu ne dis pas combien tu veux de chiffres après la virgule,
Maintenant le laisse la solution à d'autre
A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMar 29 Sep 2009 - 22:18

@André
Si je comprends bien, tu veux obtenir en Panoramic l'équivalent du MOD du Basic ?
(on suppose que a et b sont des entiers, et le résultat sera un entier)

Code:
resteentier = b * (a/b - INT(a/b)): Rem équivalent à: a MOD b du QBasic
Revenir en haut Aller en bas
Invité
Invité




Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 7:47

J'en sais rien vu vu que c'est une instruction que je n'utilisais pas. J'ai pas trouvé l'équivalent en justbasic, il me semble qu'elle existait en Gfa basic d'Atari, mais je ne m'en rappel pas. J'essaye tout simplement de répondre à la demande de Andres. Simplement il me semble normal d'intervenir à la place de Jack si on peut le laisser tranquille. J'aurai préférai qu'un autre intervienne, pour une instruction que je n'utilise pas. Dans le type de prog que je fais, je n'ai pas besoin de cette instruction, par contre en python, elle est très employée et facile à utilisée.
A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 10:17

Eh bien c'est fait, je lui ai donné la solution en une ligne de code sans déranger Jack (ça ne valait vraiment pas la peine).

Exemple d'utilisation que j'en avais en QBasic: analyse d'un fichier binaire par blocs de longueur donnée (pour copie, analyse etc...)

Soient:
lf = taille du fichier
lb = taille d'un bloc
Il faudra faire n boucles de lecture:
n = lf\lb * partie entière de la division
et pour finir une lecture de lr octets:
lr = lf MOD lb * reste de la division

soit, en Panoramic:
Code:
n = INT(lf / lb)
lr = b * (lf / lb - n)

Malheureusement, en Panoramic on ne peut pas lire un fichier binaire par blocs mais seulement octet par octet.

PS: une remarque pour André: ton sujet aurait été mieux dans la rubrique "A l'Aide !"
Revenir en haut Aller en bas
Invité
Invité




Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 12:48

Puisqu'on parle de MOD ou FRAC(), vous vous en servez pour quoi faire?
En faisant un essai, je viens de voir que modulo en python, ce n'est pas la même chose. Frac donne la partie décimal, alors que modulo en Python (puisque j'ai fais référence plus haut) donne le reste de la division:
frac(12/5)=0.4, alors que 12 % 4 en python donne 2, soit 12- (2X5)=2. Là encore une fois, je suis hors sujet. Cela ma permit d'apprendre quelque chose, comme chaque fois que je me plante!
A+
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

Opérateurs arithmétiques Empty
MessageSujet: re   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 13:42

salut andré

voici une commande qui peut remplacer MOD c'est à dire le reste d'une division.

Code:

re2 = a - (int(a/b) * b)

cela fonctionne avec des décimales. Il suffit bien entendu que a soit supérieur à b et que b soit différent de zéro.

pour exemple, essaye ce code

Code:

dim a,b,re,re2
label debut,fin
debut:
input "a:";a
input "b:";b
if b=0 then goto fin
re = b * (a/b - int(a/b))
re2 = a - (int(a/b) * b)
print
print "reste = ";re
print
print "reste2 = ";re2
print
wait 2500
goto debut
fin:
terminate

le "re2" est plus précis et exacte que le "re"
désolé JL35, mais il me semble que ta formule dans certains donne des chiffres approximatif

georges
@+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 14:42

Bravo Georges, tu as mis le doigt sur la faille, les arrondis de Panoramic compliquant un peu la chose. IL faut évidemment déclarer le reste du calcul comme 'entier', c'est à dire:
Code:
reste% = b * (a/b - Int(a/b))
pour éviter ces valeurs parasites de 45,00000000001 ou 44,99999999999
Mais je reconnais que ta formule:
Code:
reste = a - (Int(a/b) * b)
qui donne systématiquement un entier est aussi simple et résout élégamment le problème.

Edit:
Finalement c'est exactement la même formule, si on développe la mienne:
r = b * (a/b - Int(a/b)): rem *** ma formule
-> r = b * a/b - b * Int(a/b)
-> r = a - b * Int(a/b): rem *** la formule de Georges
et ça semble traité différemment par Panoramic... ???


Dernière édition par JL35 le Mer 30 Sep 2009 - 15:13, édité 2 fois
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

Opérateurs arithmétiques Empty
MessageSujet: re   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 15:11

a votre service!
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 15:13

... je viens d'éditer pendant que tu parlais...
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

Opérateurs arithmétiques Empty
MessageSujet: RE   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 15:17

Salut JL35

Pour la formule que j'ai donné, je me réfère uniquement à la logique arithmétique.

georges
@+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques EmptyMer 30 Sep 2009 - 15:26

Moi aussi évidemment, et mathématiquement c'est exactement la même formule comme je le montre plus haut, mais exprimée à ta façon elle rend un entier correct, alors qu'à la mienne elle rend des décimales intempestives.
Revenir en haut Aller en bas
Contenu sponsorisé





Opérateurs arithmétiques Empty
MessageSujet: Re: Opérateurs arithmétiques   Opérateurs arithmétiques Empty

Revenir en haut Aller en bas
 
Opérateurs arithmétiques
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Bug avec la priorité des opérations arithmétiques ?
» Problème de traitement des opérateurs avec le compilateur.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: