giúp mình bài pascal này với

  • Thread starter chipmunk_alvinandthe@yahoo.com.vn
  • Ngày gửi
  • Replies 1
  • Views 3,441

C

chipmunk_alvinandthe@yahoo.com.vn

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

như tiêu đề
Viết chương trình hiển thị các số vừa đối xứng thập phân vừa đối xứng nhị phân từ a đến b với a,b được nhập từ bàn phím. In ra và đếm xem có bao nhiêu số trong khoảng đó.
các bạn giúp mình giải bài theo cách dễ hiểu nhất nghe (nếu chú thích thì tốt biết mấy)

còn k thì các bạn giảng thuật toán của bài giải này cho mình với, đọc mình k hiểu lắm
Mã:
VAR A:ARRAY [1..100] OF INTEGER; i,j:INTEGER;
n,xn,maxn,tmp:LONGINT; check:BOOLEAN;
BEGIN
write('N = ');readln(maxN);
write('Tim duoc: ');
FOR n:=1 TO maxn DO
BEGIN
tmp:=n;
xn:=0;
REPEAT
xn:=xn*10+tmp MOD 10;
tmp:=tmp DIV 10;
UNTIL tmp=0;
check:=xn=n;
IF check THEN
BEGIN
tmp:=n;
i:=0;
REPEAT
i:=i+1;
a[i]:=tmp MOD 2;
tmp:=tmp DIV 2;
UNTIL tmp=0;
FOR j:=1 TO i DIV 2 DO
IF a[j]<>a[i+1-j] THEN
BEGIN
check:=FALSE;
break;
END;
IF check THEN write(n, ' ');
END; END;
readln; END.
 
H

harry9xsakura

const fi='kiemtra.inp';
fo='kiemtra.out';
var n:longint;
{------------------------------------------------------}
function nhiphan(x:longint):boolean;
var a:array[1..10]of longint;
i,d,j:longint;
begin
d:=0;
while x>0 do
begin
inc(d);
a[d]:=x mod 2;
x:=x div 2;
end;
for i:=1 to d div 2 do
if a<>a[d-i+1] then exit(false);
exit(true);
end;
{------------------------------------------------------}
function doixung(x:longint):boolean;
var a:array[1..10]of byte;
i,d:longint;
begin
d:=0;
while x>0 do
begin
inc(d);
a[d]:=x mod 10;
x:=x div 10;
end;
for i:=1 to d div 2 do
if a<>a[d-i+1] then exit(false );
exit(true);
end;
{--------------------------------------------------------}
procedure doc;
begin
assign(input,fi);
reset(input);
read(n);
close(input);
end;

procedure inkq;
begin
assign(output,fo);
rewrite(output);
if (nhiphan(n)) and (doixung(n)) then write('true') else write('false');
close(output);
end;

begin
doc;
inkq;
end.

{giải thích: có 2 thủ tục kiểm tra xem số n có là số có dạng nhị phân đối xứng không(nhiphan) và có là số đối xứng không (doixung), nếu số n thỏa mãn cả 2 thủ tục thì viết ra true nếu không viết ra false} ;) còn cái code trên thì mình không hiểu gì cả
 
Top Bottom