Algorithme: réduction de boucle
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Algorithme: réduction de boucle



  1. #1
    invitef47010ed

    Algorithme: réduction de boucle


    ------

    Bonjour,
    j'ai un problème pour un petit programme que je vous soumets. J'ai une suite de n boucles:
    Ai est le ième vecteur d'une liste.
    bj est la j-éme composante d'un vecteur B.

    Pour b1=1 puis -1
    Pour b2=1 puis -1
    Pour b3=1 puis -1
    ...
    Pour bn=1 puis -1

    Faire Ai=B
    i=i+1
    Fin Faire
    Fin pour
    Fin pour
    ...
    Fin pour

    Vous comprenez bien que le problème consiste à trouver comment réduire cette succession de Pour.
    Je bloque :s
    Merci!

    -----

  2. #2
    invite9cf21bce

    Re : Algorithme: réduction de boucle

    Bonjour.

    Si tu as droit aux fonctions, tu peux faire comme suit :

    B : tableau[1..kmax]
    i : entier

    boucler(k,kmax)
    {
    si k<kmax
    debut boucle sur chaque valeur possible de B[k]
    affecter B[k]
    boucler(k+1,kmax)
    fin boucle sur chaque valeur possible de B[k]
    sinon
    faire un truc avec le tableau B (A[i]=B, i=i+1)
    }

    main()
    {
    i=0
    boucler(1,kmax)
    }

    Taar

  3. #3
    invitef47010ed

    Re : Algorithme: réduction de boucle

    Merci! Mais je travaille sous Maple et je ne crois pas qu'une fonction puisse s'appeler elle même comme c'est le cas ici

  4. #4
    invite9cf21bce

    Re : Algorithme: réduction de boucle

    Citation Envoyé par Eogan Voir le message
    Merci! Mais je travaille sous Maple et je ne crois pas qu'une fonction puisse s'appeler elle même comme c'est le cas ici
    Si si, une procédure peut s'appeler elle-même en Maple.
    Ceci fait l'affaire (Maple V release 4 et toute version suivante) :

    Code:
    > boucler := proc (k,kmax)
    local j; global i, A, B; for j in [1,-1] do
    B[k] := j; if (k = kmax) then
    A[i] := [seq(B[t],t=1..kmax)]; #ici tu peux rajouter "print A[i];" pour voir ce que ça donne i := i+1;
    else
    boucler(k+1,kmax);
    fi;
    od;
    end; > n := 4 ; # par exemple i:=1; # ou bien 0 boucler(1,n);
    Pas la peine de déclarer les variables, à part à l'intérieur du corps de la procédure pour distinguer les locales des globales.

    Taar

  5. A voir en vidéo sur Futura
  6. #5
    invitef47010ed

    Re : Algorithme: réduction de boucle

    Merci beaucoup je ne savais pas que Maple pouvait faire ça... Faut dire que j'ai l'habitude de travailler sous fortran mais j'ai besoin de la biblio de Maple pour la suite de mon problème

  7. #6
    invite007f93cb

    Re : Algorithme: multiplication égyptienne

    AIDEZ MOI svp j'ai un problème pour ecrire un algorithme qui dit:
    pour multiplier deux entier x et y, on répète la double opération suivante sur le couple (x,y) : tant que y est non nul, on multiplie x par 2 et on divise y par 2 (quotient entier). le résultat est égal à la somme des multiples de x correspondant à des quotients de y impairs (le couple initial y compris).
    svp help me mrc d'avance

  8. #7
    invite332de63a

    Re : Algorithme: multiplication égyptienne

    bonjour,
    a mon avis il y a un problème dans ton tant que y est non nul , car le divisé par 2 ne l'annulera jamais ... mis à part si il est nul au départ donc bon ...

  9. #8
    inviteea028771

    Re : Algorithme: réduction de boucle

    Sauf si il fait la division entière

    Sinon ton problème est simple, il suffit d'écrire en code ta phrase
    En C :
    Code:
    int res=0;
    
    while (y != 0) // tant que y n'est pas nul
    {
        if (y%2 == 1) // si le quotient de y est impair
        {
             res = res + x; // alors on ajoute le multiple de x
        }
        x = x * 2; // puis on multiplie x par deux
        y = y / 2; // et on divise y par deux
    }

  10. #9
    sylvainc2

    Re : Algorithme: multiplication égyptienne

    C'est bien connu sous le nom de méthode du paysan russe, ou méthode russe pour la multiplication de deux entiers:
    http://www.recreomath.qc.ca/dict_rus...iplication.htm

  11. #10
    invite332de63a

    Re : Algorithme: multiplication égyptienne

    Ok si c'est une division entière.

Discussions similaires

  1. Algorithme factoriel avec boucle while
    Par invite3a7edcd7 dans le forum Logiciel - Software - Open Source
    Réponses: 29
    Dernier message: 31/07/2009, 22h27
  2. boucle de graviton
    Par invite8ef897e4 dans le forum Physique
    Réponses: 12
    Dernier message: 30/04/2008, 18h17
  3. boucle convexe
    Par invite89e47f89 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 03/10/2005, 16h00
  4. boucle for
    Par invitef5b0e516 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 22/06/2005, 11h11
  5. Probleme de boucle FOR-Next
    Par inviteeddea82a dans le forum Électronique
    Réponses: 8
    Dernier message: 17/08/2004, 13h25