Je veux évaluer cette expression en Batch :
la valeur n sera renseignée par l'utilisateur, alors comment faire cette évaluation
![]()
Je veux évaluer cette expression en Batch :
la valeur n sera renseignée par l'utilisateur, alors comment faire cette évaluation
![]()
re
comme ça,
pour récuperer le reste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 set /p n=valeur de n : set /a (n*(n+1)*(2*n+1))/6
EDIT:
Code : Sélectionner tout - Visualiser dans une fenêtre à part set /a (n*(n+1)*(2*n+1))%%6
C'est une formule de récurrence d'une suite 1²+2²+3²+...+n², le reste vaut 0...
minnesota
Si c'est possible de faire quelque chose comme je l'ai fait en Vbscript càd quelque chose similaire à ceci avec les fonctions:
Evaluer()
Poser_question()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Dim Titre : Titre = "Evaluer le nombre N" Set ws = CreateObject("wscript.Shell") Do Call Evaluer() Call Poser_question() Loop Sub Evaluer() Do N = Trim(InputBox("Entrez le nombre N pour évaluer cette expression : "&Vbcr&" N*(N+1)*(2*N+1)/6",Titre,"4")) If Not IsNumeric(N) Then ws.Popup "Vous devez taper un Nombre pour évaluer cette expression : N*(N+1)*(2*N+1)/6 ","4",Titre,0+48 End if Loop Until IsNumeric(N) Resultat = N * (N+1) * (2*N+1)/6 MsgBox "Pour N="&N& ":" &vbcr&"N*(N+1)*(2*N+1)/6 = "&N&" * ("&N&"+1) * (2*"&N&"+1)/6 = " &Resultat ,64,Titre End Sub Sub Poser_question() Question = MsgBox ("Vouliez-vous évaluer cette expression à nouveau N*(N+1)*(2*N+1)/6 ?",VBYesNO+VbQuestion,Titre) If Question = VbYes then Call Evaluer() else Wscript.Quit end if End Sub
à peu de chose près dans la lignée de ton code vbs, en espérant que le forum ne soit plus en mode multiple micros maintenances
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 @echo off setlocal title Evaluer le nombre N :main set again=0 call :Evaluer call :Poser_question if not %again% equ 0 goto main endlocal goto :eof :IsNumeric ::NTIsNum.cmd part copy set ret=1 call set "param=%%%~1%%" for /f "tokens=1 delims=0123456789" %%i in ("%param%") do set ret=0 goto :eof :Evaluer cls echo. echo Entrez le nombre N pour ‚valuer cette expression : (N*(N+1)*(2*N+1))/6 : set /p "N=" call :IsNumeric N if not %ret% equ 1 echo Vous devez taper un Nombre pour ‚valuer cette expression : (N*(N+1)*(2*N+1))/6& pause& goto Evaluer set /a Resultat=(N*(N+1)*(2*N+1))/6 echo Pour N=%N% : (N*(N+1)*(2*N+1))/6 = (%N%*(%N%+1)*(2*%N%+1))/6 = %Resultat% goto :eof :Poser_question set "Question=n" set /p "Question=Vouliez-vous ‚valuer cette expression … nouveau (N*(N+1)*(2*N+1))/6 ? [y,[n]] " if /i "%Question%"=="y" set again=1 goto :eof
et
pour cette solution donc le sujet est
Une démonstration par récurrence se fait en 3 étapes :
- la première consiste à montrer que la relation est vraie pour un n donné, très souvent n=0 ou n=1;
- la deuxième consiste à admettre que la relation est vraie au rang n, il faut alors démontrer qu'elle l'est au rang n+1
- la troisième est la conclusion qui affirme que la relation est vraie pour tout n.
Pour résumer, si tu vérifies que la relation admise vraie au rang n l'est encore au rang n+1, tu démontres alors qu'elle le sera encore pour n+2 et ainsi de suite. Le tout est de commencer pour n=0 ou n=1 afin de montrer que c'est vraie pour n=2, puis 3, puis 4 et ainsi de suite.
Donc ici,
Pour n=1, tu t'aperçois que, donc la relation est vraie. La première étape s'achève ici.
Seconde étape : tu admets que la relation est vraie jusqu'au rang n, donc, il reste à démontrer que c'est vrai au rang
. Pour le faire, on reprend la fraction au rang
supposée vraie, on lui ajoute (n+1)^2 :
On factorise par (n+1) au numérateur :
Or, donc
Donc en remplaçantpar
dans l'expression, tu démontres que la relation est vraie au rang
.
Application :
Pour calculer le nombre de carrés contenus dans ce carré de nombre n=4:
Vous pouvez utiliser la formule de récurrence suivante:
Pour ce carré, n=4 ce qui donnera comme résultat: 30 carrés au total !
C'est Bon le Math![]()
![]()
![]()
gros +1 (n*3) merci du retour
Sinon y'a une suite qui est très intéressante, c'est celle de Fibonacci...
une autre façon de calculer cette expression : 1²+2²+3²+...+n²
proposé par un batcheur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @echo off setlocal enabledelayedexpansion set /p N=Entrez une valeur de N \\: for /l %%# in (%N%,-1,1) do set /a ADD=%%#*%%# &set /a COUNT+=!ADD! echo R‚ponse: %COUNT% carr‚(s) dans un carr‚ de taille N ! pause
Oui, mais toi tu as eu l'intelligence de tester N, c'est pas rien !
Cela dit pourquoi tu ne sautes pas le pas vers un "vrai langage de programmation" ? Parce que les scripts c'est à la fois utile et surtout très ludique, mais c'est quand même limité...
Partager