Câu 5 trang 79 SGK Tin học 11

Lý thuyết Bài tập

Tóm tắt bài

Đề bài

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...AN có giá trị tuyệt đối 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ành hình.

Hướng dẫn giải

Để lập 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 A, A1...AN có giá trị tuyệt đối không lớn hơn 100, thì ta cần phải thực hiện việc kiểm tra xem số N nhập vào (số phần tử của dãy) có thỏa mãn yêu cầu của đầu bài hay không nghĩa là 0< N< 100, nếu không đưa ra thông báo “Mời nhập lại". Còn các phần tử, A1,...AN của mảng cũng phải là những số nguyên và có giá trị tuyệt đối không lớn hơn 100 (A[i] >= -100 và A[i]<=100), nếu không đưa ra thông báo “Mời nhập lạĩ'

Tiếp đến ta phải kiểm tra dãy A nhập vào có phải là một cấp số cộng hay không nghĩa là các phần tử của dãy A vừa nhập vào có làm thành một cấp số cộng hay không và đưa ra màn hình thông báo kết quả ra màn hình “A là cấp số cộng’ hoặc “A không là cấp số cộng". Bởi vậy,

Lấy d= A[2] — A[1]

Khi đó, dãy A là cấp số cộng nếu thỏa mãn điều kiện:

A[i]=A[1] + (i-1)d.

(hoặc điều kiện A[i] - A[i-1] = d với (1

Trong chương trình ta dùng một vòng lặp theo biến đếm i để kiểm tra xem mỗi A[i] có thỏa mãn điều kiện nói trên hay không, chi cần phát hiện được một phần tử của A không thỏa mẫn là kết luận được dãy A không là cấp số cộng.

Chương trình:

program bai5_chuong4;

uses crt;

var

A: array[1..100] of integer;

d,rt,i, dem: integer;

begin

clrscr;

writeln('Nhap mot so lon hon 0 va nho hon 100'); repeat

write ('Nhap N:');

readln(N) 

if (N>=1000) or (N<=0 ) then writeln(’Moi nhap lai !');

until (N>0) and (N<1000); writeln('Nhap cac gia tri cac so hang co tri tuyet doi khong lon hon 1000');

for i:=1 to n do repeat

write (' a [', i ,'] = ')

 readln (a [i]) ; if (A[i]>100) or (A[i]<-1000) then write(’Moi nhap lai ');

until (A[i]>-1000) and (A[i]<1000);

{Kiem tra xem CO la cap so cong khong?} d: = A[2] - A[ 1 ] ; dem:=0;

for i:= 2 to n do if A[i] - A[i-l]od then dem:= dem + 1; if dem >0 then writeln('A khong la cap so cong') else writeln(’A la cap so cong');

readln,

end.

Khi chạy chương trình, nếu nhập số phần tử cùa dãy N= 5 và các phần tử của dãy theo thứ tự là 2,4,6, 8,10 thì chương trình đưa ra thông báo “A la cap so cong”(Hình 59).

Nhưng khi nhập N không thỏa mãn điều kiện đầu bài, chẳng hạn N= -5 thì chương trình đưa ra thông báo “Mời nhập lại!”. Khi đó, ta phải vào lại N, chẳng hạn, N= 5 và nhập tiếp các phần tử của dãy, chẳng hạn: 1, 3, 5, 7, 9 thì kết quả của chương trình: “A la cap so cong’’ (Hình 60).

Còn trong trường hợp các phần tử nhập vào của dãy không thỏa mãn điều kiện A[i] < 1000 và A[i] > -1000: thì ta phải nhập lại các phần tử của dãy cho đến khi chương trình đưa ra thông báo A là cấp số cộng hay không?

Chẳng hạn, ta nhập vào dãy N= 7 phần từ với giá trị các phần tử lần lượt như sau:

2, 5, 7 8, 9, 4, 7 (ở phần tử thứ tư lúc đầu nhập vào số-1500 thì chương trình yêu cầu nhập lại và đã nhập vào số 8) thì chương trình dưa ra thông báo: " A khong la cap so cong* (Hình 62).

 

Copyright © 2021 HOCTAP247