Giải bài tập Turbo Pascal - Bài 5 trang 79

Đề: Viết chương trình nhập từ bàn phím số nguyên dương n (n<= 100) và dãy a gồm n số nguyên a1, a2, ..., an có giá trị tuyệt đối không lớn hơn 1000. Hãy cho biết dãy a có phải là một cấp số cộng hay không và thông báo kết quả ra màn hình.
Giải bài tập Turbo Pascal - Bài 5 trang 79
Giải bài tập Turbo Pascal - Bài 5 trang 79

TEST

Input:
n=5;
a1=1; a2=2; a3=3; a4=4; a5=5;
Output: Day so vua nhap la mot cap so cong

Input:
n=5
a1=2; a2=3; a3=9; a4=4; a5=7;
Output: Dãy so vua nhap khong phai la mot cap so cong

Ý tưởng

Ta đã biết một dã số là một cấp số cộng nếu các phần tử liên tiếp hơn kém nhau một số d. Vậy ta sẽ nhập dãy số vào một mảng rồi kiểm tra hiệu của (a[i]-a[i-1]) có bằng (a[i+1] - a[i]) không, sau đó i lại được tăng thêm 1.
Nếu (a[i]-a[i-1]) khác (a[i+1] - a[i]) thì chắc chắn dãy số không phải là một cấp số cộng nên ta sẽ gán hàm kiểm tra là check:=false ngay và kết thúc vòng lặp bằng lệnh break bởi có kiểm tra tiếp thì cũng không có tác dụng gì.
Ngay từ đầu chương trình thì biến check đã được gán giá trị true nên nếu không có trường hợp (a[i]-a[i-1]) khác (a[i+1] - a[i]) nào xảy ra thì biến check luôn là true.

Chương trình

{Bai tap 5, trang 79, sgk tin hoc 11 }
PROGRAM KIEM_TRA_CAP_SO_CONG;
uses crt;
type arrint = array[1..100] of integer;
var check: boolean;
    a    : arrint;
    n,i  : integer;
BEGIN
clrscr;
{Nhap phan tu cua day so }
writeln('Nhap so phan tu cua day so (n<=100)'); readln(n);
for i:= 1 to n do
   begin
      writeln('Nhap phan tu n(',i,')');
      readln(a[i]);
   end;
 {Kiem tra cap so cong}
check:= true; {Gia su day so la mot cap so cong}
for i:= 2 to (n-1) do
   if (a[i] - a[i-1]) <> (a[i+1] - a[i])
      then
         begin
            check:=false;
            break;
         end;
if check=true then
   writeln('Day so vua nhap la mot cap so cong')
else
   writeln('Day so vua nhap khong phai la mot cap so cong');
readln;
END.

Comments

Post a Comment



» Vui lòng không spam vì nó sẽ bị xóa ngay sau đó.
» Nếu chèn code hãy mã hóa trước khi chèn vào nhận xét.
» Nếu thủ thuật Blog không áp dụng được thì hãy để lại URL blog để mình tiện kiểm tra.