Posez votre question Signaler

Exercice algorithme

sousou - Dernière réponse le 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.
Lire la suite 
Réponse
+5
moins plus
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 .
Royal88 13Messages postés dimanche 23 mars 2008Date d'inscription 19 novembre 2008 Dernière intervention - 25 mars 2008 à 11:39
merci bcp pour ton aide
Répondre
fatma- 11 avril 2008 à 13:07
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
Répondre
jihad- 5 févr. 2009 à 17:32
un algorithme qui permet de Lire 2 nombres et affiche le plus grand des deux
Répondre
bouhzama- 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.
Répondre
Ajouter un commentaire
Réponse
+3
moins plus
(*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.
Ajouter un commentaire
Réponse
+2
moins plus
de rien .
Royal88- 30 mars 2008 à 18:41
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
Répondre
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+2
moins plus
svp aidez moi concernant ce sujet "tri à bulles" concernant l'algorithme j'ai besoin d'une solution de programme vrai
écrive la solution
Ajouter un commentaire
Réponse
+1
moins plus
salut
je vx s'avoire sur les methode de tri et leure desfintion
merci
fatma- 11 avril 2008 à 13:21
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
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
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.
ahmed- 15 déc. 2010 à 19:26
on se propose de convertir en heures,minuteset secondes, un temps donnéen secondes
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
permuter les valeur de A ET B. les valeurs initiales de A ET B SONT LUCS
Ajouter un commentaire
Ce document intitulé «  exercice algorithme  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.