Mong các bạn giúp đỡ
- Mystic yêu thích
Chào các bạn..
Gửi bởi Tu Pham trong 16-04-2016 - 19:28
Làm vậy là ko được rồi bạn !
Ở đây là 2 xâu riêng biệt mà (xâu s1 và xâu s2).
Bạn phải nén xâu s1 và giải nén xâu s2 .
Ở phần chữ đỏ là chưa đúng :bạn chỉ mới xét được các số có 1 chữ số (chẳng hạn 5) còn số có 2 chữ số trở lên thì sao ?(chẳng hạn 55).
=> Thuật toán chưa triệt để ,bạn nên xem lại
uh, đúng rồi, mình quên xét từ 2 chữ số trở lên..
Gửi bởi Tu Pham trong 16-04-2016 - 12:34
bạn có thể tham khảo thử, code câu 1 của mình
program hoanthien;
uses crt;
var j,n,m:integer;
function kththien(x:integer):boolean;
var s,i:integer;
begin
s:=0;
kththien:=false;
for i:=1 to x div 2 do
if x mod i = 0 then s:=i + s;
if s=x then kththien:=true;
end;
begin
clrscr;
write('nhap vao so n=');
readln(n);
if kththien(n) then writeln(n,' la so hoan thien')
else writeln('khong phai la so hoan thien');
write('cac so hoan thien <=n la:');
for j:=1 to n do
if kththien(j) then write(j:4);
readln;
end.
câu 2 mình nén xâu đó và giải nén xâu vừa nén
Gửi bởi Tu Pham trong 16-04-2016 - 12:32
Bài 2:
program gyu;uses crt;var t,i,j,k,l,p,q:integer;s,s1,s2,n,sp,ss:string;st:char;function xt(s:string):char;beginxt:=s[1];end;beginclrscr;write('Nhap xau 1:');readln(s1);j:=1;repeatt:=0;s:='';for i:=j to length(s1) doif (s1[i]=s1[i+1]) then t:=t+1 elsebeginl:=i;p:=i+1;break;end;if t>=2 thenbeginfor i:=j to l dos:=s+s1[i];st:=xt(s);str(t+1,n);sp:=sp+n+st;end elsefor i:=j to l dosp:=sp+s1[i];j:=p;until j>length(s1);writeln('Xau nen:',sp);writeln;write('Nhap xau 2:');readln(s2);j:=1;ss:='';repeatval(s2[j],q,l);if q>=3 thenbeginfor k:=1 to q doss:=ss+s2[j+1];j:=j+2;end elsebeginss:=ss+s2[j];j:=j+1;end;until j>length(s2);writeln('Xau giai nen:',ss);readlnend.P/s:Bạn post bài 2 lên xem có giồng mình ko !
bạn có thể tham khảo thử, code câu 1 của mình
program hoanthien;
uses crt;
var j,n,m:integer;
function kththien(x:integer):boolean;
var s,i:integer;
begin
s:=0;
kththien:=false;
for i:=1 to x div 2 do
if x mod i = 0 then s:=i + s;
if s=x then kththien:=true;
end;
begin
clrscr;
write('nhap vao so n=');
readln(n);
if kththien(n) then writeln(n,' la so hoan thien')
else writeln('khong phai la so hoan thien');
write('cac so hoan thien <=n la:');
for j:=1 to n do
if kththien(j) then write(j:4);
readln;
end.
Community Forum Software by IP.Board
Licensed to: Diễn đàn Toán học