Racine carré en VBS

Résolu/Fermé
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 - 30 nov. 2015 à 17:05
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 - 15 déc. 2015 à 20:38
Bonjour,

Je programme en VB Script . Ma question conçernerait un script que j'utiliserai dans un autre but que celui de l'inclure en HTML ou en excel hein donc c'est juste un simple script enregistré à faire fonctionner normalement..

Voilà j'ai ma variable "delta", et j'aimerais calculer sa racine carré...C'est pas plus compliqué. Sauf que sqr c'est pour un nombre, comment calculer pour la valeur d'une variable ??

Merci

8 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 15/12/2015 à 07:48
Bonjour,

Deux choses ne fonctionnent pas principalement dans votre code :
1- l'orthographe des "mots clés" de programmation : else if n'est pas la même chose que ElseIf
2- votre code n'est pas indenté. Il est tout "plat" collé sur la marge de gauche. Ainsi vous n'avez pas pu voir que vous aviez deux End If en trop.

Voici votre code correctement corrigé :
Msgbox " Bonjour ! Bienvenue dans ce petit outil ! " 

Do 
	choix = inputbox("Pour calculer discriminant/racine d'une équation du second degré, tapez 1."&vbLf& "Pour convertir des Joules en eV, Taper 2." & vbLf & "Pour convertir des eV en J, taper 3." , "Que choississez-vous ?", "Taper votre choix ici...")
 	If choix="1" then 
		a = inputbox("Valeur de a?" , "Valeur de a", "a vaut...") 
		b = inputbox("Valeur de b?" , "Valeur de b", "b vaut...") 
		c = inputbox("Valeur de c?" , "Valeur de c", "c vaut...") 
		d = b*b-4*a*c 
		e= 2*a 
		f=(-b)/e 
		reponse = MsgBox("Delta = " & d & vbLf & "Voulez - vous les racines ?", vbYesNo, "Delta")
 		If reponse = vbYes then 
			If d>0 then 
				g = sqr(d)
				Msgbox " Il existe donc deux racines réelles : " & vbLf & "x1= (-" & b & " -"& g & ") /"&e & vbLf & " x2= (-" & b & " +"& g & ") /"&e
 			ElseIf d=0 then 
				Msgbox "Il existe donc une racine double qui est :" &vbf& "x0 = " & f 
			Else 
				h = sqr(-d)
				Msgbox " Il existe donc deux racines complexes : " &vbLf& "z1 = (-" & b & " - i *"& h & ") /"&e & vbLf & "z2 = (-"&b&" + i*"&h& ") /"&e
 
			End If 
		End If 
	End If 
	If choix="2" then 
		J = inputbox("Valeur en J?" , "Valeur en J", "Valeur...") 
		eJ = J*6242000000000000000 
		Msgbox " Pour "&J& "J, on obtient "&eJ& " eV" 
	ElseIf choix="3" then 
		eV = inputbox("Valeur en eV?" , "Valeur en eV", "Valeur...") 
		J = eV * 0.00000000000000000016022 
		MsgBox " Pour "&eV& " eV, on obtient " &J& " J." 
	End If 
	rep = MsgBox(" Voulez-vous faire autre chose ?", vbYesNo, "Fin?") 
Loop while rep=vbYes 

Msgbox " Merci et bonne journée! "


Une troisième chose importante (certes moins en vbs, mais tout de même) consiste en la déclaration de variables.
Pour cela, toutefois, je vous laisse faire.

Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
2
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 57
15 déc. 2015 à 20:38
Bonjour,

Merci !!! Ca fonctionne nickel ! Maintenant je vais donc voir comment afficher une seule variable quand delta est positif, enfin x1 et x2 en une seule valeur !

Et je verrai pour l'améliorer!

Merci pijaku :)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 déc. 2015 à 08:48
Réponse fin janvier...
1
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
30 nov. 2015 à 18:08
Bonjour,
Normalement, y a pas de lezard

exemple:
x=25.5
MsgBox Sqr(x)
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
30 nov. 2015 à 18:13
Result=sqrt(delta)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 57
30 nov. 2015 à 20:55
Bojour à vous deux,

f894009, en fait ca ne fonctionne pas car delta est un calcul de discriminant, donc il fait son opération, et il faut que je fasse la racine carré de la valeur de delta, donc on ne peut pas mettre une valeur à delta puisque selon les valeurs qu'on entrera avant, delta changera.

Nhenry, non ca ne fonctionne pas... :/ Car en VBS c'est sqr, sans le -t et que ca s'applique qu'aux nombres... :/
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 1/12/2015 à 08:46
Bonjour,

l'instruction sqr(x) ou x est une variable (discriminat ou pas) marche sans equivoque, a vous de l'utiliser "correctement", voir le post de michel_m 30 nov. 2015 à 22:12
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 nov. 2015 à 22:12
Bpnjour-soir
Si par ex Delta est le discriminant d'une équation du 2° degré
il fau connaitre les valeurs des variables a,b,c

a=4
b=5
C=1
Delta=b^2-4a*c
If delta>=0 then xxx=sqr(delta)
0
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 57
12 déc. 2015 à 20:31
Bonjour, non cela ne fonctionne pas... Car évidemment a b et c étaient généres par des inputbox... mais même votre exemple ne fonctionne pas il me met erreur ...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 déc. 2015 à 10:48
Bonjour michel_m

geo trouve-tout: mettez votre code a dispo, car y a kake chose qui cloche, vous ne nous dtes pas tout !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 57
Modifié par geo trouve-tout le 13/12/2015 à 18:32
Mais si lol;
Le voilà ici :
https://code.empreintesduweb.com/10050.html
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023
14 déc. 2015 à 08:20
Bonjour,

Depuis quand les nombres negatifs ont une racine carree ??????????????????????????

A lire:

http://fr.maths.free.fr/maths/mnr/tr-lec/racines/racines.htm
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
14 déc. 2015 à 08:44
Bonjour tout le monde,

En effet, pas de racine carrée d'un nombre négatif.
Il faut donc calculer les racines dans le test IF :
choix = InputBox("Pour calculer discriminant/racine d'une équation du second degré, tapez 1." & vbLf & "Pour convertir des Joules en eV, Taper 2." & vbLf & "Pour convertir des eV en J, taper 3.", "Que choississez-vous ?", "Taper votre choix ici...")
If choix = "1" Then
   a = InputBox("Valeur de a?", "Valeur de a", "a vaut...")
   b = InputBox("Valeur de b?", "Valeur de b", "b vaut...")
   c = InputBox("Valeur de c?", "Valeur de c", "c vaut...")
   d = b * b - 4 * a * c
   e = 2 * a
   f = (-b) / e
   reponse = MsgBox("Delta = " & d & vbLf & "Voulez - vous les racines ?", vbYesNo, "Delta")
   If reponse = vbYes Then
      If d > 0 Then
         g = Sqr(d)
         MsgBox " Il existe donc deux racines réelles : " & vbLf & "x1= (-" & b & " -" & g & ") /" & e & vbLf & " x2= (-" & b & " +" & g & ") /" & e
      ElseIf d = 0 Then
         MsgBox "Il existe donc une racine double qui est :" & vbLf & "x0 = " & f
      Else
         h = Sqr(-d)
         MsgBox " Il existe donc deux racines complexes : " & vbLf & "z1 = (-" & b & " - i * " & h & ") /" & e & vbLf & "z2 = (-" & b & " + i* " & h & ") /" & e
      End If
   End If
End If
0
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 57 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
14 déc. 2015 à 17:21
Les gens, merci de votr aide. Mais je vus rappelle qu'on est dans le champ complexe et qu'en mathématique la réponse c'est -delta, comme delta est ici négatif, ca donne forcemment un nombre positif ( - et - donne +...)
0
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 57 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
14 déc. 2015 à 17:28
Je suis en scientifique f89 lol c'est ma spécialité et lorsque tu calcule les racines lorsque delta est négatif, tu prend la racine de -Delta. Impossible ? Non car delta est négatif lorsqu'on tuilise cette formule donc -delta sachant que delta est négatif ca fait + delta donc ca reste une racine positive ;)
0
geo trouve-tout Messages postés 341 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 9 août 2023 57
Modifié par baladur13 le 13/12/2015 à 18:38
Hey,

Msgbox " Bonjour ! Bienvenue dans ce petit outil ! " 
Do
choix = inputbox("Pour calculer discriminant/racine d'une équation du second degré, tapez 1."&vbLf& "Pour convertir des Joules en eV, Taper 2." & vbLf & "Pour convertir des eV en J, taper 3." , "Que choississez-vous ?", "Taper votre choix ici...")
If choix="1" then
a = inputbox("Valeur de a?" , "Valeur de a", "a vaut...")
b = inputbox("Valeur de b?" , "Valeur de b", "b vaut...")
c = inputbox("Valeur de c?" , "Valeur de c", "c vaut...")
d = b*b-4*a*c
e= 2*a
f=(-b)/e
g = sqr(d)
h = sqr(-d)

reponse = MsgBox("Delta = " & d & vbLf & "Voulez - vous les racines ?", vbYesNo, "Delta")
if reponse = vbYes then
if d>0 then
Msgbox " Il existe donc deux racines réelles : " & vbLf & "x1= (-" & b & " -"& g & ") /"&e & vbLf & " x2= (-" & b & " +"& g & ") /"&e
else if d=0 then
Msgbox "Il existe donc une racine double qui est :" &vbf& "x0 = " & f
else
Msgbox " Il existe donc deux racines complexes : " &vbLf& "z1 = (-" & b & " - i *"& h & ") /"&e & vbLf & "z2 = (-"&b&" + i*"&h& ") /"&e

end if
end if
end if
end if


If choix="2" then
J = inputbox("Valeur en J?" , "Valeur en J", "Valeur...")
eJ = J*6242000000000000000
Msgbox " Pour "&J& "J, on obtient "&eJ& " eV"
else if choix="3" then
eV = inputbox("Valeur en eV?" , "Valeur en eV", "Valeur...")
J = eV * 0.00000000000000000016022
MsgBox " Pour "&eV& " eV, on obtient " &J& " J."
End If
End if


rep = MsgBox(" Voulez-vous faire autre chose ?", vbYesNo, "Fin?")
Loop while rep=vbYes
Msgbox " Merci et bonne journée! "
0