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?

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?

0 bình luận về “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?”

  1. 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.

    Bình luận
  2. 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.

    viet-thuat-toan-cho-day-gom-n-so-nguyen-tu-a1-den-an-cho-biet-trong-day-co-bao-nhieu-so-co-gia-t

    Bình luận

Viết một bình luận