Tìm giá trị lớn nhất của một dãy số nguyên
Yêu cầu : Tại bước 2 của thuật toán tìm max, thay phép gán a1 cho max bằng phép gán aN cho max thì thuật toán được viết lại như thế nào. Viết lại thuật toán và mô phỏng thuật toán bằng một dãy số cụ thể.
Tại bước 2 của thuật toán tìm max, thay phép gán a1 cho max bằng phép gán aN cho max thì thuật toán được viết lại như thế nào. Viết lại thuật toán và mô phỏng thuật toán bằng một dãy số cụ thể.
#include <bits/stdc++.h>
using namespace std;
long long n,i,x,dem;
int main()
{
cin>>n;
dem=0;
for (i=1; i<=n; i++)
{
cin>>x;
if (x%2==0) dem++;
}
cout<<dem;
return 0;
}
Trong thuật toán tìm giá trị lớn nhất của dãy số nguyên. Với N=8 và dãy A như sau:
3 7 4 8 19 15 9 12
Khi thuật toán kết thúc thì Max và chỉ số i nhận giá trị là bao nhiêu?
(0.5 Điểm)
a Max=19 và i=9
b Max=19 và i=5
c Max=19 và i=1
d Max=19 và i=6
Ví dụ 6. Tìm số lớn nhất trong dãy A các số a1, a2, ..., an cho trước.
Ta sẽ dùng biến MAX để lưu số lớn nhất của dãy A. Việc xác định MAX có thể được thực hiện như sau: Đầu tiên gán giá trị a1 cho biến MAX. Tiếp theo, lần lượt so sánh các số a2, ..., an của dãy A với MAX. Nếu ai> MAX, ta gán ai cho MAX.
INPUT: Dãy A các số ai, a¿, ..., a„ (n >]).
OUTPUT: Giá trị MAX = max{ay, 4ạ,..., a„Ì.
Từ đó, ta có thuật toán sau:
Bước 1. MAX← a1; i←1.
Bước 2. Nếu ai> MAX, gán MAX← ai.
Bước 3. i←i+ 1.
Bước 4. Nếu i≤n, quay lại bước 2.
Bước 5. Thông báo giá trị MAX và kết thúc thuật toán.
Dưới đây minh hoạ thuật toán trên với trường hợp chọn thỏ nặng nhất trong bốn chú thỏ có trọng lượng tương ứng là 2, 1, 5, 3 ki-lô-gam.
Ví dụ 6. Tìm số lớn nhất trong dãy A các số a1, a2, ..., an cho trước.
Ta sẽ dùng biến MAX để lưu số lớn nhất của dãy A. Việc xác định MAX có thể được thực hiện như sau: Đầu tiên gán giá trị a1 cho biến MAX. Tiếp theo, lần lượt so sánh các số a2, ..., an của dãy A với MAX. Nếu ai> MAX, ta gán ai cho MAX.
INPUT: Dãy A các số a1, a2, ..., an (n >1).
OUTPUT: Giá trị MAX = max{a1, a2,..., an}.
Từ đó, ta có thuật toán sau:
Bước 1. MAX← a1; i←1.
Bước 2. Nếu ai> MAX, gán MAX← ai.
Bước 3. i←i+ 1.
Bước 4. Nếu i≤n, quay lại bước 2.
Bước 5. Thông báo giá trị MAX và kết thúc thuật toán.
Dưới đây minh hoạ thuật toán trên với trường hợp chọn thỏ nặng nhất trong bốn chú thỏ có trọng lượng tương ứng là 2, 1, 5, 3 ki-lô-gam.
Cho thuật toán sau: Bước 1: Nhập số nguyên dương N và các số hạng a1, a2, …., aN;
Bước 2: i <-- 1; Đếm <--- 0;
Bước 3 : Nếu i> N thì đưa ra giá trị Đếm rồi kết thúc;
Bước 4: Nếu ai > 0 thì Đếm <--- Đếm +1;
Bước 5: Gán i <--- i+1, quay lại bước 3;
Nhập N=8 và dãy số có giá trị như sau: 4 -6 3 -8 -11 5 7 8
Câu 1 (vận dụng cao) Kết quả của biến i sau khi thực hiện thuật toán trên là: A. 3 B. 5 C. 8 D. 9 Câu 2. (vận dụng cao) Kết quả của biến Đếm sau khi thực hiện thuật toán trên là: A. 26 B. 27 C. 5 D. 9
Câu 3. (thông hiểu) Thuật toán trên dùng để: A. Tính tổng dãy số từ a1 đến aN B. Tìm Các số âm C. Đếm các số dương D. Tính tổng các số dương từ ai đến aN Câu 4. (vận dụng cao) Nếu ở Bước 4 ta thay phép so sánh ai > 0 thành ai
Bước 1: Nhập n và nhập dãy số
Bước 2: ln←0; i←1
Bước 3: Nếu ln<a[i] thì ln←a[i];
Bước 4: i←i+1;
Bước 5: Nếu i<=n thì quay lại bước 3
Bước 6: Xuất ln
Bước 7: Kết thúc
Cho dãy số n số nguyên dương a1,a2,...,an. Hãy tìm hai số ai,aj sao cho i khác j và ai+aj đạt max. Xây dựng thuật toán bằng sơ đồ khối hoặc liệt kê cho bài toán trên.
cho N , dãy số A1,A2,...An. hãy cho biết có bao nhiêu số hạng trong dãy có giá trị bằng 0
a) xác định input,output
b) viết thuật toán bằng phép liệt kê hoặc sơ đồ khối
c) hãy mô phỏng thuật toán với bộ dữ liệu sau:
-5,0,4,6,-8,0,6,12. và cho biết kết quả
#include <bits/stdc++.h>
using namespace std;
long long n,i,dem,x;
int main()
{
cin>>n;
dem=0;
for (i=1; i<=n; i++)
{
cin>>x;
if (x==0) dem++;
}
cout<<dem;
return 0;
}
Bài 1. Viết thuật toán: Tìm số lớn nhất của 3 số nguyên dương A1, A2, A3
Yêu cầu:
- XĐBT:
- Viết thuật toán bằng cách liệt kê
#include <bits/stdc++.h>
using namespace std;
long long a,b,c;
int main()
{
cin>>a>>b>>c;
cout<<max(a,max(b,c));
return 0;
}