Probléme en algorithme

joseph90 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

7 réponses

tatou_38 Messages postés 1937 Date d'inscription   Statut Membre Dernière intervention   121
 
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 !
0
grad
 
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.
0
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
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;
0
joseph90 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
merci mé j v une algorithme compléte svp + traduction en pascal
merci**
0

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

Posez votre question
tatou_38 Messages postés 1937 Date d'inscription   Statut Membre Dernière intervention   121
 
exigeant en plus joseph90 !
0
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
/* 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.
0
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
Une petite remarque:

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