Xin biếu 1 bài:
Câu 10: (7.0 điểm) Cho một chuỗi gồm n2 ký tự. Người ta cắt chuỗi từ trái sang phải thành n chuỗi con, mỗi chuỗi con có đúng n ký tự. Viết mỗi chuỗi con thành một cột, ta có một bảng gồm n hàng và n cột ký tự.
Yêu cầu: Viết chương trình nhập vào một chuỗi gồm n2ký tự (4 £ n2£ 255).
a) In ra màn hình các hàng có tổng mã ASCII của các ký tự là lớn nhất.
b) In giá trị tổng ở câu a ra màn hình.
Ví dụ:
Nhập chuỗi
abcdefghi
-------------
Bảng sắp xếp:
a d g
b e h
c f i
------
Kết quả
a) c f i
b) 306
Không ai giải thì mình làm luôn vậy :
program jop;
uses crt;
var s,th,cc,a,b,te:string;
zz:array[1..100] of string;
i,j,k,g,kk,x,ss,l,t,ko,tg:integer;
z:array[1..100] of integer;
begin
clrscr;
l:=0;
repeat
write('Nhap xau: ');readln(s);
t:=length(s) mod 10;
if (t<>2)and(t<>3)and(t<>7)and(t<>8) then break;
writeln('Nhap so ky tu la so chinh phuong !');
until false;
for i:=1 to length(s) do
if length(s) div i=i then
begin
ko:=i;
break;
end;
i:=1;j:=1;
repeat
a:=a+s[i];
i:=i+ko;
if length(a) mod ko=0 then
begin
j:=j+1;
i:=j;
end;
until length(a)=length(s);
t:=0;
for i:=1 to ko do
begin
t:=t+ord(a[i]);
b:=b+a[i];
z[1]:=t;
zz[1]:=b;
end;
kk:=ko+1;ss:=ko;th:='';k:=2;
repeat
ss:=ss+ko;
for i:=kk to ss do
begin
th:=th+a[i];
l:=l+ord(a[i]);
end;
z[k]:=l;
z[k+1]:=t;
zz[k]:=th;
zz[k+1]:=b;
k:=k+2;
th:='';
l:=0;
kk:=ss+1;
until ss=length(s);
for i:=1 to k-1 do
for j:=i+1 to k do
if z[i]<z[j] then
begin
tg:=z[i];
z[i]:=z[j];
z[j]:=tg;
te:=zz[i];
zz[i]:=zz[j];
zz[j]:=te;
end;
writeln('a) ',zz[1]);
for i:=1 to k do
if (z[i]=z[1])and(zz[i]<>zz[1]) then
writeln(' ',zz[i]);
writeln('b) ',z[1]);
readln
end.
>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<
Và ...
>>> Không bao giờ nói bạn đã thất bại
Cho đến khi đó là nỗi lực cuối cùng của bạn
Và không bao giờ nói rằng:
Đó là nỗi lực cuối cùng của bạn
Cho tới khi bạn đã thành công >>>
~ Mystic Lâm