program sujet2_29_05_2012; uses wincrt; type tab=array[1..12] of string; var t:tab; p:integer; procedure saisir; begin randomize; p:=1+random(3); writeln('p = ',p); end; function test (ch:string):boolean; var i:integer; begin i:=1; while (ch[i] in ['A'..'Z']) and (i<=length(ch))do begin i:=i+1; end; test:=(i>length(ch)) and(length(ch)>=3) end; procedure remplir(var t:tab); var i:integer; begin writeln('Donner les elements du tableau : '); for i:=1 to 12 do begin repeat readln(t[i]) until test(t[i]); end; end; procedure permut(VAR x,y:string); var ch:string; begin ch:=x; x:=y; y:=ch; end; procedure tri(var t:tab); var j,i:integer; te:boolean; begin repeat te:=false; for i:=1 to 11 do if t[i][p]>t[i+1][p] then begin permut( t[i],t[i+1]); te:=true; end; until te=false; end; procedure affiche(t:tab); var i:integer; begin for i:=1 to 12 do begin write(t[i]:10,' '); if i mod 3 = 0 then writeln; end; end; begin saisir; remplir(t); tri(t); affiche(t); end.