Accueil > Forum > > > > un problème de calcul
un problème de calcul
jeudi 10 mars 2011 à 00:59:30 |
un problème de calcul

cabanac
|
Bonjour à tous,
Dans un site, je dois mettre en place un calcul.
Je ne connais pas le javascript, et donc, n'y arrive pas.
J'aimerai trouver de l'aide.
Explication : des surfaces 0 à 120 des prix 1500
121 à 170 8.60 (en plus bien sur des 1500)
171 à 300 909.60
301 à 500 10.37 (en plus bien sur des 909.6)
J'ai bien commencer avec les deux faciles, c'est à dire de 0 à 120 et de 171 à 300. Mais le reste, je ne trouve pas la solution pour écrire ces codes.
Je vous mets ce dont j'ai commencé :
</style>
<script language="JavaScript" type="text/JavaScript">
function aeweboutils (form1) {
if (form1.surface.value <= 120)
{form1.m.value = 1500}
else
if ((form1.surface.value >= 121) && (form1.surface.value <= 170))
{form1.m.value = form1.surface.value*8.6
form1.m.value = (Math.round(form1.m.value*100))/100}
else if ((form1.surface.value >= 171) && (form1.surface.value <= 300))
{form1.m.value = 909.60}
else if ((form1.surface.value >= 301) && (form1.surface.value >=500))
{form1.m.value = form1.surface.value
form1.m.value = (Math.round(form1.m.value*100))/100}}
</script>
et, plus bas :
<form name="form1" method="post" action="">
<div align="center"><big><font
color="#333333">Surface en m² </font> <input
name="surface" size="7" maxlength="7" type="text">
<input value="Calcul" onclick="aeweboutils(this.form)"
name="button" type="button"><font color="#333333"><input
name="m" size="9" maxlength="9" type="text">¤TTC</font>
En fait, les calculs sont simples : cela donne (pour les deux manquants)
par ex : 150-120 * 8.60 + 1500 = 1758
Et pour l'autre tranche par ex : 350-300 * 10.37 + 909.60 = 1428.10
Bien sur, les lignes {form1.m.value = form1.surface.value*8.6
form1.m.value = (Math.round(form1.m.value*100))/100}
et {form1.m.value = form1.surface.value
form1.m.value = (Math.round(form1.m.value*100))/100}} ne fonctionnent pas.
(J'avais trouvé quelque part ce bouts de code, j'ai voulu m'adapter, mais, je ne sais pas)
Je vous remercie par avance de l'aide que vous voudrez bien m'apporter.
|
|
jeudi 10 mars 2011 à 01:42:57 |
Re : un problème de calcul

007Julien
|
Une première indication, le signe du produit en javascript est * et non pas un point.
|
|
jeudi 10 mars 2011 à 09:53:31 |
Re : un problème de calcul

cabanac
|
Bonjour Julien,
Tout d'abord, je vous remercie de me répondre.
Comme je l'ai dit, je ne connais rien de javascript.
Certes, c'est une indication, mais, cela ne m'aide pas vraiment.
Ce que j'aurai aimé, c'est de me mettre sur la voie (voir plus) sur la façon d'écrire que (toujours suivant mon ex) la surface rentrée (dans la tranche entre 121 et 170) - 120 et égal à cette différence * 8.60 + 1500.
C'est surtout cette façon de l'écrire en java script que je ne sais pas faire.
Merci encore de l'aide dont vous pourrez m'apporter.
|
|
jeudi 10 mars 2011 à 12:19:35 |
Re : un problème de calcul

007Julien
|
Il conviendrait d'abord de bien préciser le barème à appliquer... Les formules semblent être les suivantes, si P désigne le prix (en euros) et S la surface (en m² ?):
De 0 à 120 m²
P = 1500 ¤ (1)
À partir de 120 et jusqu'à 170 m²
P = 1500 + (S-120) * 8.6 ¤ (2)
(ce que l'on décrit habituellement par un Prix de 1500 ¤ plus un supplément de 8.60 ¤ par mètre-carré supplémentaire)
À partir de 170 et jusqu'à 300 m²
P = 1500 + 909,6 ¤ (3)
(mais l'on s'embarrasserait pas alors de deux montants et annoncerait la somme totale ???)
Au delà de 300 m²
P = 1500 + 909.6 + (S-300) * 10.37 ¤ (4)
Pourtant la discontinuité apparaissant entre les formules (2) et (3) (le prix pour 169,99 m² devrait me semble-t-il être très voisin de celui pour 170 m² ???) et le palier (les prix ne sont plus liés à la surface entre 170 et 300 m² ???), me font douter de la validité de mon interprétation des formules proposées.
Une fois ces formules établies ou rétablies, il devrait être possible de les traduire en javascript, par exemple comme suit:
Code Javascript : var E,S,P,Q;
E=form1.surface
// Remplacer l'éventuelle virgule par un point
S=E.replace(/,/,'.');
if (S<120) P=1500;
else if (S<170) P=1500+(S-120)*8.6;
else if (S<300) P=1500+909,6
else 1500+909.6+(S-300)*10.37;
P=Math.round(P*100)/100;
// Remplacer le point par une virgule
Q=P.replace(/\./,',');
form1.montant.value=Q+' ¤';
|
|
jeudi 10 mars 2011 à 16:00:31 |
Re : un problème de calcul

cabanac
|
Merci de votre réponse rapide.
Pour le 1 et 2, vous avez bien vu, les barèmes sont bons.
Mais, pour ce qui concerne le 3 (et donc 4) j'ai fait une énorme bétise,
Ce n'ai pas 909.60, mais 9.60¤ (là aussi de plus par m²) Cela m'apprendra à me relire, surtout lorsque l'on ne voit plus très bien.
Donc, afin de voir si j'ai tout compris, cela me donnerai :
else if (s<300) p=1500+(s-170)*9.6;
else if (s<500) p=1500+(s-300)*10.37;
Si c'est ça, faut-il que je change quelque chose à ce niveau :
<form name="form1" method="post" action="">
<div align="center"><big><font
color="#333333">Surface en m² </font> <input
name="surface" size="7" maxlength="7" type="text">
<input value="Calcul" onclick="aeweboutils(this.form)"
name="button" type="button"><font color="#333333"><input
name="m" size="9" maxlength="9" type="text">¤TTC</font>
Ou cela fonctionnera-t-il de cette manière.
Encore merci, j'ai hâte de votre réponse afin de tester cela.
|
|
jeudi 10 mars 2011 à 16:40:23 |
Re : un problème de calcul

007Julien
|
Attention, il ne faut pas remplacer des majuscules par des minuscules (javascript est sensible à la casse !) donc votre proposition doit être précédée du code suivant
Code Javascript : var e,s,p,q;
e=form1.surface
// Remplacer l'éventuelle virgule par un point
s=e.replace(/,/,'.');
Ensuite, les 4 lignes centrales du script proposé (instructions if else emboîtées) forment un tout qu'il ne faut pas dissocier !
Quant aux valeurs, vous êtes seul juge, je constate seulement qu'il n'y avait pas de limite à 500 précedemment et que votre dernière condition if (si ...) n'est pas terminée par un else (sinon ...) : si la surface entrée est supérieure à 500, une erreur va survenir !
Pour tout cela il faut absolument disposer d'un cours de javascript ou bien faire des recherches en tapant simplement javascript if dans Google...
Sinon, j'ai remplacé le nom de l'input d'affichage du prix (m dans le formulaire initial) par un montant. C'est, me semble-t-il, la seule précaution à prendre après celle qui consistait à remplacer les virgules par des points, pour faire le calcul en javascript, puis revenir ensuite à la notation des francophones...
Mais, il faut absolument travailler avec un débogeur (firebug de Mozilla Firefox) où au minimum Activer, dans Internet Explorer, l'Option Afficher une notification de chaque erreur de script (voir Outils, Options Internet volet Avancé rubrique Navigation).
|
|
jeudi 10 mars 2011 à 17:01:16 |
Re : un problème de calcul

cabanac
|
Merci de tous vos conseils.
Je vais faire des recherches sur "if", puis plus généralement sur java script.
J'ai donc ajouter firebug à mon firefox.
Je teste tout cela, et, je ne manquerai pas de revenir soit pour vous remercier, soit pour avoir un complément d'information.
Cordialement.
|
|
jeudi 10 mars 2011 à 23:47:17 |
Re : un problème de calcul

cabanac
|
Un petit retour vers vous, car bien sur, le bouton "calcul ne fonctionne pas.
Je m'en doutais. Et, bien qu'ayant fait des recherches à la fois sur ce site, google et bien d'autres, je n'ai rien trouvé qui puisse m'aider.
Ce que j'ai compris, c'est le value="Calcul" c'est le nom du bouton.
Donc cela est bon, et onclick="quelque chose" c'est ce qui déclenche le calcul.
Donc, ce : onclick="aeweboutils(this.form)" ne fonctionne plus car cela : function aeweboutils (form1) a été changé.
J'ai bien essayé en suivant le même raisonnement de le remplacer par : "var", mais sans grand espoir.
Donc, voici ce que j'ai complété :
<script language="JavaScript" type="text/JavaScript">
var E,S,P,Q;
E=form1.surface
// Remplacer l'éventuelle virgule par un point
S=E.replace(/,/,'.');
if (S<120) P=1500;
else if (S<170) P=1500+(S-120)*8.6;
else if (S<300) P=1500+(S-170)*9,6;
else if (S<500) P=1500+(S-300)*10.37;else P=Math.round(P*100)/100;
// Remplacer le point par une virgule
Q=P.replace(/\./,',');
form1.montant.value=Q+' ¤';
</script>
</head>
Et, plus bas, à l'endroit du bouton :
<form name="form1" method="post" action="">
<div align="center"><big><font
color="#333333">Surface en m² </font> <input
name="surface" size="7" maxlength="7" type="text">
<input value="Calcul" onclick="var()"
type="button"><fontcolor ="#333333"><input
name="m" size="9" maxlength="9" type="text">¤TTC</fontcolor></big></div>
</form>
Afin que je puisse tester le calcul, pourriez vous me dire comment faire afin que ce bouton fonctionne.
Merci d'avance. (En attendant, je continue de chercher au cas où.)
|
|
vendredi 11 mars 2011 à 00:43:43 |
Re : un problème de calcul

007Julien
|
Il suffit d'inclure le code proposé dans une fonction que l'on peut nommer comme on l'entend mais surtout pas var qui est un mot réservé servant à désigner des variables.
Donc avec une fonction nommée calculPrix (et en utilisant les boutons pour distinguer le code) la page pourrait être constituée comme suit; après correction de quelques erreurs résiduelles:
Code HTML : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Untitled</title>
<style type="text/css">
// Placer ici les indications de style
body {font-color:#000099;font-family:Garamond;}
</style>
<script type="text/javascript">
// la fonction dont l'argument f deviendra l'objet formulaire (voir l'appel plus bas)
function calculPrix(f){
var E,S,P,Q;
E=f.surface.value;
// Remplacer l'éventuelle virgule par un point
S=E.replace(/,/,'.');alert(S)
if (S<120) P=1500;
else if (S<170) P=1500+(S-120)*8.6;
else if (S<300) P=1500+(S-170)*9.6;
else if (S<500) P=1500+(S-300)*10.37;
else {alert('Surface trop grande. Formule indéfinie');return}
P=Math.round(P*100)/100;
// Remplacer le point par une virgule
Q=P.toString().replace(/\./,',');
f.montant.value=Q;
}// fin de la fonction
</script>
</head>
<body>
<form name="frm" method="post" action="">
<div align="center">
<p><big>
Surface en m²
<input name="surface" size="7" maxlength="7" type="text">
<input value="Calcul" onclick="calculPrix(this.form)" type="button">
<input name="montant" size="9" maxlength="9" type="text"> Prix TTC en ¤
</big></p>
</div>
</form>
</body>
</html>
|
|
vendredi 11 mars 2011 à 10:36:17 |
Re : un problème de calcul

cabanac
|
Bonjour,
Je vous remercie de votre aide, je vais donc essayer et revenir vers vous pour vous donner le résultat
Bonne journée à vous
|
|
Cette discussion est classée dans : math, value, calcul, form1, surface
Répondre à ce message
Sujets en rapport avec ce message
Control et insertion dans des cellules [ par christuckers ]
Salute tout le monde !Bon ba la j'ai l'impression de bloqué sur un truc completement ridicule. Je me dis que j'ai réussi à faire un truc de iouf, mais
Si superieur... [ par christuckers ]
Salut les CSistes !!!Aujourd'hui, pour pas changer, question, bete, qui je pense, vous demandera pas trop d'effort...Voici mes calculs javascripts :fu
Arrondir résultat d'un calcul [ par theseif ]
Bonjour à tous, j'utilise se scrit dans une page html pour faire des calcul: type="text/javascript"><fo
Augmenter ou diminuer le chiffre d'un champ texte [ par Tilix ]
Salut, J'ai un code javascript, avec une boucle qui repete plusieurs fois les champs form : <font color="
Porblème de d'objet... [ par phicot ]
Bonjour, voila j'ai créer une fonction dans laquel je tests si un champs d'un formulaire est vide ou non. J'ai regarder comment on faisait, mais chez
Synthaxe Javascript (Calcul) [ par 4lman78 ]
Bonjour à tous,Pour mon premier message, je me présente vite fait, je m'apelle Alexandre et je suis Technicien Micro réseaux.J'ai mis en place ce site
Calcul Emprunt [ par coeugh ]
Bonjour, Formule : La Formule générale pour le calcul de prêt : [b]A = k* I / (1 – (1 + I)–n)[/b] cette formule mathématique signifie que le monta
Simple addition javascript (mais compliquée!!) + recup donnée [ par wekxx ]
Bonjour, Je suis plutot du genre à me débrouiller tout seul comme un grand, quitte à perdre plusieurs heures à tester mais là je déclare forfait. J'a
Simple fonction de calcul [ par jebalialaeddinecpp ]
Bojour, Pour un mini-projet en Mathématique j'ai besoin de faire un petit code en JS pour calculer la somme de plusieurs inputs... J'ai trouvé ce code
Creer un formulaire de calcul [ par quinton75 ]
Bonjour, J'essaie de crée un formulaire qui multiplie le nombre de place par le prix mais ça ne fonctionne pas [^^sad2][^^sad2] [code=js] func
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|