Viết chương trình kiểm tra số đối xứng pascal

Định nghĩa: Một số là số đối xứng nếu đọc ngược cũng là nó.
Ví dụ: 12321 hoặc 657756 hoặc 110011
Yêu cầu: 
-) Viết chương trình nhập vào hai số (biểu diễn trong cơ số 10)
+) N (0 < N < 16)
+) S (0 < S < 10001)
-) Xuất ra 
+) N số lớn hơn S và là số đối xứng khi biểu diễn trong ít nhất hai cơ số c khác nhau (1< c < 11)
+) Số số nguyên tố trong N số trên
-) Dữ liệu: Dulieu.Vao
-) Kết quả: Ketqua.Ra
Ví dụ: 
Dulieu.Vao
Ketqua.Ra

3 25
26
27
28
0


Dưới đây là phần kiểm tra mảng đối xứng pascal mới nhất được cập nhập bởi onthihsgcác bạn hãy tham khảo để có thể hiểu hơn về số đối xứng pascal và hướng xa hơn đó là kiểm tra mảng đối xứng c hãy theo dõi nhé.

Video hướng dẫn mảng đối xứng pascal

Hướng dẫn giải BT kiểm tra xâu đối xứng trong pascal:

Cách 1:

– đơn giản nhất là ta sẽ đọc ngược lại xâu S và lưu vào biến S1. sau đó kiểm tra xem S có giống S1 không?
– Cách này trong SGK Tin Học 11 cũng đã viết, chúng ta sẽ tạo ra một xâu đảo ngược so với xâu S – Để tạo được xâu S1 đảo ngược so với xâu S ta sẽ cho vòng lặp chạy từ length(s) tới 1 rồi cộng vào xâu S1 từng kí tự S[i].
– Sau đó ta sẽ so sánh xâu S1 và S ban đầu, nếu hai xâu bằng nhau thì xâu S đối xứng, ngược lại xâu S không đối xứng.

Code tham khảo kiểm tra xâu đối xứng cách 1:

PROGRAM XAU_DOI_XUNG;
USES CRT;
VAR S,S1:STRING;
 i:INTEGER;
BEGIN
clrscr;
 writeln('Nhap xau '); readln(s);
 for i:= (length(s)) downto 1 do
 S1:=S1+S[i];
 if (S1=S) then write('Xau doi xung') else writeln('Xau khong doi xung');
readln;
END.

Cách 2:

-về thời gian thực hiện, cách 2 sẽ nhanh hơn cách 1

– Về ý tưởng, chúng ta sẽ kiểm tra phần tử đầu và cuối ngay lập tức, chứ không cần phải tạo ra S1 như ở cách 1.
– Đối với cách này ta sẽ chạy vòng lặp For Do từ 1 tới một nửa xâu (Length(s) Div 2) và biến kiểm tra KT thuộc kiểu Boolean .Ban đâu thì KT:=TRUE,  trong quá trình chạy ta sẽ so sánh kí tự với kí tự đối xứng của nó (S[length(s) – i + 1]) nếu nó bằng ta tiếp tục so sánh nếu không bằng ta sẽ gán KT:=FALSE và dừng vòng lặp bằng lệnh BREAK;
Sau khi chạy vòng lặp xong ta hãy kiểm tra biến KT, nếu nó TRUE tức là xâu đối xứng, ngược lại thì xâu không đối xứng.

Code tham khảo kiểm tra xâu đối xứng pascal

 
program xaudoixung; 
uses crt; 
var s : string; k: integer; 
procedure xdx(s : string ); 
var i : integer; kt: boolean; 
begin 
k := (length(s)); kt:=true; 
{gia su xau s doi xung} 
for i:= 1 to (k div 2) do 
begin 
if s[i] <> s[k-i+1] then 
begin kt:=false; break; 
end; 
end; 

if kt= true then writeln('Xau doi xung') 
else writeln('Xau khong doi xung'); 
end; 
begin 
clrscr; 
writeln('Nhap xau '); readln(s); 
xdx(s); 
readln; 
end. 

Tải tài liệu bài tập chuyên đề về xây : Download

Bài tập tương tự:

1. Hãy kiểm tra số nguyên được nhập vào có là số đối xứng không?

– Ở bài này có 2 cách làm là sử dụng div mod hoặc cũng có thể xử lí bằng xâu như ở trên.

Nguồn: kienthuc24h

Đã đăng Tháng Mười Hai 6, 2016Tháng Mười 4, 2019

Điều hướng bài viết