Giải thích thuật toán: ví dụ
- Hoán đổi giá trị của 2 biến x và y
Tìm giá trị lớn nhất của dãy A các số a , a ,…..,a
-…
1: Hoán đổi giá trị hai biến x và y
Chúng ta sẽ gán biến trung gian tam cho x, xong rồi gán biến trung gian tam đó cho y; rồi sau đó gán y ngược lại cho x, và xuất kết quả ra-đó chính là x và y sau khi hoán đổi cho nhau.
2: Tìm giá trị lớn nhất của dãy A
Chúng ta sẽ gán biến ln cho a[1], sau đó sẽ quét qua các phần tử trong mảng xem thử có phần tử nào lớn hơn ln thì gán ln cho phần tử đó. Sau cùng xuất ln ra, ta được số lớn nhất cần tìm.
Input: dãy số nguyên gồm n số được nhập từ bạn phím
Output: số lớn nhất, bé nhất trong dãy
B1: nhập dãy số nguyên
B2: gán max:=a[1]; min:=a[1]
B3: nếu max<a[i] thì max:=a[i]; min>a[i] then min:=a[i]
B4: in kết quả ra màn hình
: Hãy mô tả thuật toán cho các bài toán sau:
a) Tính tổng các phần tử chia hết cho 3 và chia hết cho 9 trong dãy gồm n số a1, a2, a3, …, an.
b) Tính tổng các ước số của một số nguyên N.
c) Hoán đổi giá trị của hai số nguyên M và N.
d) Tìm ước chung lớn nhất của hai số X và Y
Cho dãy A gồm N số nguyên a1,a2 ,…aN. Hãy cho biết tổng tất cả các số trong dãy A và giá trị trung bình cộng của các số trong dãy A?
Hãy xác định bài toán và mô tả thuật toán giải các bài toán
#include <bits/stdc++.h>
using namespace std;
double x,t;
int n,i;
int main()
{
cin>>n;
t=0;
for (i=1; i<=n; i++)
{
cin>>x;
t=t+x;
}
cout<<"tong cac so la:"<<fixed<<setprecision(2)<<t<<endl;
cout<<"trung binh la:"<<fixed<<setprecision(2)<<t/(n*1.0);
return 0;
}
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.
Trình bày các bước giải bài toán sau:
Cho số nguyên N và dãy A1,A2.....AN
Hãy tìm và đưa ra vị trí của phần tử có giá trị lớn nhất.
#include <bits/stdc++.h>
using namespace std;
long long a[10000],n,i,ln;
int main()
{
cin>>n;
ln=LLONG_MIN;
for (i=1; i<=n; i++)
{
cin>>a[i];
ln=max(ln,a[i]);
}
for (i=1; i<=n; i++)
if (ln==a[i]) cout<<i<<" ";
return 0;
}
Viết thuật toán và chương trình nhập từ bàn phím dãy A gồm n phần tử a1, a2, a3,..an có kiểu số nguyên. Tìm và in ra màn hình các phần tử có giá trị lẻ, các phần tử có giá trị chẵn trong dãy A