Bonjour
Tout est dans le titre.
Existe-t-il un calcul mathématiques pour connaître la partie entière d'un nombre décimal, c'est sans doute évident, mais sur le moment je ne vois pas
Merci.
Bonjour
Tout est dans le titre.
Existe-t-il un calcul mathématiques pour connaître la partie entière d'un nombre décimal, c'est sans doute évident, mais sur le moment je ne vois pas
Merci.
Par "calcul mathématique" tu entends une formule ?
du genre int(x) = x - (x mod 1)
Bonjour,
Moi, j'essayerais de reconstruire le nombre
N= ... + n3.E3 + n2.E2 + n1.E1 + n0.E0 + les décimales
E étant les puissances de 10.
Donc, la partie entière est la somme des nxEx.
Sinon, en C il y floor(), mais je suppose qui vous le saviez .
Oui, je cherche une formule.
Le langage que j'utilise (Prolog) connait floor mais la librairie (clpr) n'en veut pas donc j'essaie de trouver quelque chose avec + - * / mais pas mod par exemple car mod ne s'applique qu'aux entiers en Prolog.
En division entière, tu as "//" et "div" si je me souviens bien.
Sinon tu dois avoir la fonction "float_integer_part".
Salut,
Si j'ai bien compris tu veux une fonction de Real vers integer qui calcule la partie entière de X sans utiliser la librairie de Prolog ?
Oui, un calcul (je ne peux même pas en faire une fonction, je dois réécrire le calcul à chaque fois), en utilisant uniquement + - / * min, max car j'utilise la lib clpr qui ne veut que ces opérateurs mathématiques
Oui c'est exactement cela ! (à part que Prolog connait les integer (de toute taille d'ailleurs)).
Pour bien comprendre voici ce que je veux faire : je voudrais inverser cette formule : X is I + floor(0.5+sqrt(I)) qui permet d'obtenir la suite des nombres qui ne sont pas des carrés :
par exemple avec le code
on obtient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 seq_non_square(N) :- forall(between(1,N,I), ( X is I + floor(0.5+sqrt(I)), writeln(X))).
Je voudrais donc un calcul qui me permette de trouver I à partir d'un nombre X en faisant { X = I + floor(0.5+sqrt(I)) } avec la lib clpr !?- seq_non_square(21).
2
3
5
6
7
8
10
11
12
13
14
15
17
18
19
20
21
22
23
24
26
true.
Salut,
Je vois maintenant clair, je vais essayer de le faire.
C'est le genre de problèmes qui m'intéresse
Toutes fois si vous voulez bien me dire où peut on trouver :
*Prolog
*la bibliothèque clpqr
*un ou des cours intéressants sur Prolog
Nb : J'utilise Windows Xp.
J'ai toujours entendu parler de Prolog, je veux maintenant l'essayer.
Merci.
J'utilise SWI-Prolog. Les bibliothèques clpq et clpr sont incluses.
Tu as quelques cours ici !
Comme certain(s) participant(s) s'intéresse(nt) au problème, je retire le tag peut-être la solution arrivera-t-elle ?
Salut,
J'ai une question :
X = I + floor(0.5+sqrt(I))
est ce que ce '0.5' est utilisé dans le but de donner un résultat juste avec floor?
Je renomme les variables :
A + floor(0.5 + sqrt(A)) = B
Pour résoudre cette équation il faut enlever le floor.
J'ai essayé d'avoir la formule inverse dans Maple, voici les résultats :
*avec '0.5' solve(A + 0.5 + sqrt(A) = B, A) :
B + 0.5 * sqrt(-1 + 4 * B)
B - 0.5 * sqrt(-1 + 4 * B)
*sans '0.5' solve(A + sqrt(A) = B, A) :
B + 0.5 + 0.5 * sqrt(1 + 4 * B)
B + 0.5 - 0.5 * sqrt(1 + 4 * B)
Maintenant il reste à savoir quelle formule choisir et où mettre le floor dans la bonne place.
finalement voici la formule :
I = X + Floor(1 - 0.5 * Sqrt(1 + 4 * X))
maintenant il reste à l'écrire en Prolog.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager