Viết thuật toán: cho dãy gồm N số nguyên từ a1 đến an .cho biết trong dãy có bao nhiêu số có giá trị dương?
2 câu trả lời
Input: n, dãy A.
Output: Số số có giá trị dương.
Thuật toán:
Bước 1: i ← 1; d ← 0.
Bước 2:
- Nhập A[i].
- Nếu A[i]>0 thì d ← d+1.
Bước 3: i ← i+1.
Bước 4: Nếu i<=n quay lại bước 2. Ngược lại chuyển đến bước 5.
Bước 5: Thông báo d và kết thúc thuật toán.
***Tham khảo thêm:
Hoạt động của thuật toán:
Bước 1: Gán i = 1; d = 0.
Bước 2:
- Nhập A[1] đến A[n].
- Sau mỗi lần nhập, chương trình sẽ kiểm tra: nếu số vừa nhập lớp hơn 0 thì giá trị d tăng thêm 1 đơn vị. (Đếm giá trị).
Bước 3: Sau mỗi vòng lặp, biến đếm tăng thêm 1 đơn vị.
Bước 4: Nếu i ≤ n (điều kiện đúng) thì quay lại thực hiện tiếp câu lệnh. Ngược lại (điều kiện sai) thì chuyển tới bước tiếp theo.
Bước 5: Thông báo số số có giá trị dương có trong dãy và kết thúc thuật toán.
Cách viết chương trình:
- Sử dụng mảng 1 chiều.
+ Cú pháp: var <tên biến mảng>: array[<chỉ số đầu>..<chỉ số cuối>] of <kiểu dữ liệu>;
+ Tên biến mảng tự đặt (tuân theo quy tắc đặt tên).
+ Chỉ số đầu và chỉ số cuối là kiểu số nguyên. Chỉ số đầu là giá trị 1, chỉ số cuối có thể là 100; 500; 1000;....
+ Trong bài, sử dụng kiểu dữ liệu là integer.
- Sử dụng lệnh lặp với số lần biết trước (có thể dùng lệnh lặp chưa biết trước).
+ Cú pháp: for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
+ Giá trị đầu và giá trị cuối là kiểu số nguyên. Giá trị đầu là giá trị 1, giá trị cuối là n.
- Câu lệnh kiểm tra: if <tên mảng>[<biến đếm>]>0 then <giá trị đếm>:=<giá trị đếm>+1;
Viết chương trình:
program phuont;
uses crt;
var A: array[1..500] of integer;
i, n, d: integer;
begin
clrscr;
write('Nhap n = '); readln(n);
d:=0;
for i:=1 to n do
begin
write('A[', i, '] = '); readln(A[i]);
if A[i]>0 then d:=d+1;
end;
write('Co ', d, ' so co gia tri duong');
readln
end.
Xác định bài toán
Input: Dãy A gồm N số nguyên a1, a2..., aN ;
Output: Số số hạng trong dãy A có giá trị lớn hơn 0.
Ý tưởng: Tìm kiếm tuần tự được thực hiện một cách tự nhiên. Ta dùng biến đếm k để đếm số số hạng trong dãy A có giá trị lớn hơn 0. Bắt đầu từ i = 0 và mỗi lần tăng i lên 1, ta lần lượt so sánh ai > 0?, nếu ai > 0 thì tăng k lên 1, tiếp tục quá trình cho đến khi i > N thì đưa ra kết quả k và kết thúc.
Cách liệt kê
Bước 1. Nhập N, các số hạng a1, a2..., aN
Bước 2. i = 0, k= 0,
Bước 3. Nếu ai > 0 thì k = k+1;
Bước 4. i = i + 1
Bước 5: Nếu i > N thì đưa ra giá trị k, rồi kết thúc;
Bước 6. Quay lại bước 3.