Probléme en algorithme

Fermé
joseph90 Messages postés 40 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 21 janvier 2012 - 19 janv. 2008 à 14:34
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 21 janv. 2008 à 11:52
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

7 réponses

tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 121
19 janv. 2008 à 14:39
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
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 jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
19 janv. 2008 à 14:55
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 samedi 19 janvier 2008 Statut Membre Dernière intervention 21 janvier 2012
19 janv. 2008 à 21:18
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 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 121
19 janv. 2008 à 23:29
exigeant en plus joseph90 !
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
20 janv. 2008 à 09:59
/* 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 jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
21 janv. 2008 à 11:52
Une petite remarque:

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