IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

évaluer une expression mathématique en Batch [Batch]


Sujet :

Scripts/Batch

  1. #1
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut évaluer une expression mathématique en Batch

    Je veux évaluer cette expression en Batch :

    la valeur n sera renseignée par l'utilisateur, alors comment faire cette évaluation

  2. #2
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    re

    comme ça,

    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
    pour récuperer le reste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set /a (n*(n+1)*(2*n+1))%%6
    EDIT:

    C'est une formule de récurrence d'une suite 1²+2²+3²+...+n², le reste vaut 0...

  3. #3
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    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


  4. #4
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    à 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

  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    et pour cette solution donc le sujet est

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut Récurrence mathématique (Démonstration+Application)
    Citation Envoyé par minnesota Voir le message
    C'est une formule de récurrence d'une suite 1²+2²+3²+...+n², le reste vaut 0...
    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çant par 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

  7. #7
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    gros +1 (n*3 ) merci du retour
    Sinon y'a une suite qui est très intéressante, c'est celle de Fibonacci...

  8. #8
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    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

  9. #9
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    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é...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. évaluer une expression mathématique
    Par aminems dans le forum C++
    Réponses: 4
    Dernier message: 27/05/2008, 00h41
  2. Evaluer une expression mathématique
    Par sbeu dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/07/2007, 18h28
  3. Réponses: 2
    Dernier message: 20/11/2006, 21h19
  4. [C#] Comment évaluer une expression ?
    Par bart64 dans le forum C#
    Réponses: 3
    Dernier message: 11/01/2006, 15h46
  5. Analyser une expression mathématique
    Par Amokrane dans le forum C++
    Réponses: 5
    Dernier message: 06/01/2006, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo