begin process at 2012 05 29 18:45:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Function & Méthodes

 > 

un problème de calcul


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 10,000 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales