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.

Câu hỏi trong lớp Xem thêm