Probléme en algorithme

Bonjour,
svp j ai besoi a votre aide pour trouver une solutin a cette exercice
************
soit v1 et v2 deux tableaux d entier de taille n (n est impair)
ecrire un algorithme permettant le trnsfert des element de v1 dans v2 selon le principe suivant:
les element de rang impair de v1 sont rangés dans v2 en ordre inverse en comencant par la fin de v2 et les element de rangés pair de v1 sont rangés dans v2 dans le méme prdre.
/////
exemple:
v1 10 12 20 25 30
v2 12 25 30 20 10

merci de me répondre c trés important
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

  1. 1. Tu balaye v1 de 2 en 2 en commençant au 2ème élément et transfère ce que tu trouves dans la case suivante de v2
    2. Tu balaye v1 de -2 en -2 en commençant par le dernier élément de rang impair et transfère ce que tu trouves dans la case suivante de v2

    C'est tout !
    1. Voici l'algorithme:

      Algorithme ex;

      Variables:
      v1,v2,temp:tableau de 1 à N d'entiers;
      i:entier;
      Constantes N=...;

      Début
      temp <= v1
      Pour i de 1 à N faire v1[i] <= v2[N-i];
      v2 <= temp;
      Fin.
      1. Tu peux facilement creer une boucle et tu manipule deux curseurs:

        en Pascal cela donne:

        cpt1 := 1;
        cpt2 := n;

        for cpt:= 1 to n do
        begin
        if (i mod 2 = 0) then
        begin
        v2[cpt2] = v1[cpt];
        cpt2 := cpt2 - 1;
        end
        else
        begin
        v2[cpt1] := v1[cpt];
        cpt1 := cpt1 + 1;
        end;
        end;
        1. merci mé j v une algorithme compléte svp + traduction en pascal
          merci**
          1. /* Ce programme ne gère pas des cas particuliers ni exceptions */
            /* Ce code n'est pas testé! */

            Program monProgramme;

            const
            /* Definit la taille maximale */
            tailleMax = 100;
            var
            /* Declaration des compteur */
            cpt, cpt1, cpt2: Integer;

            /* la taille des tableaux */
            n: Integer;

            /* Les deux tableaux */
            v1, v2: array [1..tailleMax] of Integer;

            /* Booleen pour les boucles */
            b: Boolean;

            /* Une variable pour les boucles FOR */

            /* Le programme */
            Begin

            b := false;

            /* une petite boucle qui garantit une taille n < tailleMax */

            while (not(b)) do
            begin
            writeln("Faites entrer la taille des tableaux:");
            readln(n);
            if ((n<tailleMax) and (i mod 2 =1)) then b := true;
            end;

            /* Remplissage de v1 */

            for i:=1 to n do
            readln(v1[i]);

            cpt1 := 1; /* Curseur pour les positions paires */
            cpt2 := n; /* Curseur pour les positions impaires */

            for cpt:= 1 to n do /* Traitement case par case */
            begin
            if (i mod 2 = 0) then
            begin /* Position paire */
            v2[cpt2] = v1[cpt]; /* On met la valeur à la fin */
            cpt2 := cpt2 - 1; /* On decremente pour le faire pointer sur une case vide */
            end
            else
            begin
            v2[cpt1] := v1[cpt]; /* On met la valeur au debut */
            cpt1 := cpt1 + 1; /* On incrementer pour le faire pointer sur une case vide */
            end;
            end;

            /* Affichage du resultat */

            for i:=1 to n do
            writeln(v2[i];
            /* Fin */
            end.
            1. Une petite remarque:

              Les commentaires en pascal sont { } et non pas /* */.