Exercice algorithme

Fermé
sousou - 22 mars 2008 à 16:53
 14041988M - 2 mars 2012 à 11:08
Bonjour,
jai un exercice d'algorithm à resolu :
ecrire un programme qui permet saisir un entier de l'intervalle[10000,20000]et d'afficher cet entier en ordonnant ces différents chiffres
exemples: 12942sera affiché 12249.

8 réponses

plorytriass Messages postés 17 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 21 décembre 2008 10
24 mars 2008 à 09:03
Tu peut le fais comme sa :

1) Début Pro
2) répéter
lire(N) {Entrée de chifre}
jusqu'à (N dans [10000..20000]
3) A<-- N Mod 10
4) B<-- (N Mod 100) Div 10
5) C<-- (N Mod 1000) Div 100
6) D<-- (N Mod 10000) Div 1000
7) E<-- (N Mod 100000) Div 10000

{N s'écrit comme sa N<-- E*10000+D*1000+C*100+B*10+A Maintenant on va juste changer quelque ordre }

8) N<-- E*10000+D*1000+A*100+B*10+C
9) Fin Pro

Ok , j'espert que je t'aide .
5
Royal88 Messages postés 13 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 19 novembre 2008
25 mars 2008 à 11:39
merci bcp pour ton aide
0
Bonjour
mais cette solution est valable que pour cet exemple, donc il faut généraliser
je pense de convertir ce nombre en chaine ou en tableau et d'appliquer l'une de méthodes du tri connues
0
un algorithme qui permet de Lire 2 nombres et affiche le plus grand des deux
0
bouhzama > jihad
16 févr. 2009 à 22:31
variable A,B : numerique;
debut
ecrire('donner A :');
lire(A);
ecrire('donner B :');
lire(B);
Si A<B alors Ecrire(A)
sinon Ecrire(B);
fin si;
fin.
0
djsk90 Messages postés 3 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 9 février 2009 3
19 janv. 2009 à 15:30
(*tri batcher*)
(*Pour accélérer la vitesse d'un tri par échange, il est nécessaire de comparer des éléments qui ne sont plus adjacents et c'est ce que proposa K.E. Batcher en 1968. En voici une description appliquée à un tableau T de N éléments numérotés de 1 à N.

Soit t, la plus petite valeur telle que 2t>=N.
Soit p la valeur 2t-1, c'est le plus grand écart exprimé sous forme de puissance de 2 qui existe entre des numéros de position d'éléments de T.
*)
PROGRAM Batcher;

USES CRT;


VAR N, i, j, p, p2, q, r, t, d : WORD;
A : ARRAY[1..10000] OF BYTE;
Fin : BOOLEAN;
echange, comparaisons : longint;

PROCEDURE Affiche;
VAR i:WORD;
BEGIN

FOR i:=1 TO N DO
WRITE (A[i]:4);
WRITELN
END;

PROCEDURE SWAP(VAR a,b:BYTE);
VAR Tmp:BYTE;
BEGIN
Tmp:=a;
a:=b;
b:=Tmp ;
echange:=echange+1;
END;

BEGIN
CLRSCR;
N:=10;

RANDOMIZE;
echange :=0;
comparaisons:=0;
FOR i:=1 TO N DO
begin
A[i]:=RANDOM(50);
A[i]:=N-i;
end;

WRITELN('Avant le tri:');
Affiche;

p:=1;
WHILE p<N DO p:=p SHL 1;
p2:=p SHR 1;

WHILE p>=2 DO
BEGIN
p:=p SHR 1;
q:=p2;
r:=0;
d:=p;
Fin:=FALSE;
WHILE NOT Fin do
BEGIN
FOR i:=0 TO N-d-1 DO
begin

IF (i AND p) =r THEN
begin
comparaisons:=comparaisons+1;
IF A[i+1]>A[i+d+1] THEN SWAP(A[i+1],A[i+d+1]);
end;
end;
IF q<>p THEN BEGIN
d:=q-p;
q:=q SHR 1;
r:=p;
Fin:=FALSE
END
ELSE Fin:=TRUE;
END;
END;
WRITELN('Apres le tri:');
Affiche;
Writeln('Echange = ',echange);
Writeln('Comparaisons = ',comparaisons);
END.
3
plorytriass Messages postés 17 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 21 décembre 2008 10
28 mars 2008 à 16:08
de rien .
2
pouvez_vous m'aider à resoudre ce probleme svp et merci d'avance:

soit le tableau T1 contenant n lettre majuscule (de A à Z), n étant un entier compris entre 5 et 20
* on désire trier en ordre croissant les éléments de T1 et les ranger dans un tableau T2, 1- chercher la lettre qui a le petit cod ASCII dans T1,et ranger cette lettre dans T2, ensuite remplacer cette lettre par '*' dans T1:
ecrire un prgramme qui permet de : *saisir les éléments T1
*trier les éléments deT1 et les ranger dans T2
*afficher les éléments de T2
0
hamza zag Messages postés 2 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 17 mai 2008 2
17 mai 2008 à 17:39
algo tab min
var
tab:tableau[100]de entier
i,n,min:entier
debut
repeter
ecrire("donner un entier positive"),lire(n)
jusqu'a (n >0)
pour i de 1 à n faire
lire ( tab [i])
fin pour
min=0
pour i de 1 à n faire
si ( min>=tab[i])
min=tab[i]
ecrire(" ",min)
fin pour



(=) c'est un fléche

                
2

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

Posez votre question
svp aidez moi concernant ce sujet "tri à bulles" concernant l'algorithme j'ai besoin d'une solution de programme vrai
écrive la solution
2
salut
je vx s'avoire sur les methode de tri et leure desfintion
merci
1
Bonjour tu peux voir mon cours :

<gras>LES METHODES DE TRI D’UN TABLEAU


Le mot TRI en informatique désigne l’action d’ordonner des objets selon un critère (croissant/décroissant). Un tableau est trié (ordonné) lorsqu'il existe une relation entre ses différents éléments. On parle de :
- Tri croissant : l'élément n° i <= l'élément n° i+1.
- Tri décroissant : l'élément n° i >= l'élément n° i+1.
Dans ce cours on va voir trois méthodes de TRI connues sous les noms de Tri par sélection, tri à bulles et tri par insertion.

I/ Tri par Sélection :
Principe :
1- Comparer tout les éléments du tableau pour sélectionner le plus petit/grand.
2- Permuter le plus petit/grand élément trouvé avec le premier élément du tableau.
3- Refaire les étapes 1 et 2 : chercher le plus petit/grand élément du tableau sauf le premier puis l’échanger avec le second élément et ainsi de suite.
Ce processus est répété (N-1) fois sachant que N = nombre d’élément du tableau qu’on veut trier.

Program TriSelect;
Uses wincrt;
Const nmax=100;
Type tab=array[1..nmax]of integer;
var t:tab;
n:integer;

Procedure saisie (Var V : TAB ; Var TAILLE : integer) ;
var i:integer;
begin
repeat
write('Donner la taille du tableau : ');readln(taille);
until taille in [1..Nmax];
for i:=1 to taille do
begin
write('V[',i,']= ');readln(v[i]);
end;
end;

Procedure select(Var V : TAB ; TAILLE : integer);
var i, j, aux, posmin:integer;
begin
for i:=1 to (TAILLE-1) do
begin
posmin := i;
for j :=i+1 to TAILLE do
if V[j]<V[posmin] then
posmin:= j;
if posmin <>i then
begin
Aux := V[i] ;
V[i]:= V[posmin];
V[posmin] := Aux ;
end;
end;
end;

Procedure affichage(v:tab;taille:integer);
var i:integer;
begin
writeln('Après le tri croissant le contenu du tableau est : ');
for i:=1 to n do
writeln('v[',i,']= ',v[i]);
end;

BEGIN
saisie(T,n);
select(T,n);
affichage(T,n);
END.

II/ Tri à bulles :
Principe :
C’est une méthode de tri qui consiste à comparer les éléments du tableau par paires adjacentes.
On peut la traduire par l’algorithme formel suivant :
1- Comparer la première paire d’éléments,
2- Si T[1]>T[2] alors permuter T[1] et T[2],
3- Aller à la paire suivante et répéter les étapes 1 et 2 jusqu’à comparer la dernière paire,
4- Si une permutation a été effectuée (ou plusieurs) alors répéter ce qu’on vient de faire, sinon les éléments du tableau sont triés.


procedure bulle(var v:tab;taille:integer);
var i, aux:integer;
trouve:boolean;
begin
repeat
trouve:=false;
for i:=1 to (taille-1) do
begin
if v[i]>v[i+1] then
begin
Aux := V[i];
V[i] := V[i+1];
V[i+1] := Aux;
trouve:=true;
end;
end;
until (trouve=false);
end;


III/ Tri par Insertion :
Principe :
C’est une méthode de tri qui consiste à prendre les éléments de la liste un par un puis insérer chacun dans sa bonne place de façon que les éléments traités forment une sous liste triée.
Cette méthode peut se traduire par l’algorithme formel suivant :
1- On commence par le deuxième élément.
2- Comparer l’élément choisi avec tous ses précédents dans la liste et l’insérer dans sa bonne place.
3- Répéter l’étape 2 pour l’élément suivant jusqu'à arriver au dernier.

Pour i De 2 A TAILLE Faire
Trouve <-- Faux
Pose <-- i
j <-- i-1
TantQue (j>=1) ET (Trouve = Faux) Faire
Si V[Pose]<V[j]Alors
Aux <-- V[j]
V[j] <-- V[Pose]
V[Pose] <-- Aux
Pose <-- Pose-1
j <-- j-1
Sinon
Trouve <-- Vrai
FinSi
Fin TantQue
FinPour
FIN INSERTION
0
j'ai un cable de reseaux mais n'est pas droit et je veux le changer un cable croisee q'est e que je peut le faire.

et mercie.
1
on se propose de convertir en heures,minuteset secondes, un temps donnéen secondes
0
permuter les valeur de A ET B. les valeurs initiales de A ET B SONT LUCS
0