1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
| program tp;
uses wincrt;
type
mat=array[1..10,1..10]of char;
tab=array[1..100] of char;
var
t:tab;
m:mat;
n,c,k:integer;
var
i,j:integer;
begin
writeln('n=');
readln(n);
repeat
writeln('c=');
readln(c);
until(c<=8);
for i:=1 to n do
begin
for j:=1 to c do
begin
writeln('m[',i,j,']=');
readln(m[i,j]);
end;
end;
end;
procedure tri(var t:tab;k:integer);
var i:integer;
temp:char;
permuter:boolean;
begin
repeat
permuter:=false;
for i:=1 to n-1 do
begin
if ord(t[i])>ord(t[i+1]) then
begin
temp:=t[i];
t[i]:=t[i+1];
t[i+1]:=temp;
permuter:=true;
end;
end;
until (permuter=false);
end;
procedure affiche_t(t:tab;k:integer);
var
i:integer;
begin
for i:=1 to k do
begin
writeln(t[i]);
end;
end;
procedure regrouper (var m:mat; var n,c:integer;t:tab;k:integer);
var
l,i,j:integer;
begin
l:=0;
for i:=1 to n do
begin
for j:=1 to c do
begin
l:=l+1;
m[j,i]:=t[l];
end;
end;
end;
procedure eclater(m:mat;n,c:integer;var t:tab;var k:integer);
var
i,j:integer;
begin
for i:=1 to n do
begin
k:=0;
for j:=1 to c do
begin
k:=k+1;
t[k]:=m[j,i];
writeln(t[k]);
end;
tri(t,k);
writeln('tableau n',i,'apres tri');
affiche_t(t,k);
regrouper(m,n,c,t,k);
end;
end;
procedure affiche_m(m:mat;n,c:integer);
var
i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to c do
write(M[i,j]);
writeln;
end;
end;
begin
remplir(m,n,c);
affiche_m(m,n,c);
eclater(m,n,c,t,k);
affiche_m(m,n,c);
end. |
Partager