a) Xác định bài toán
-Input: Dãy A gồm n số nguyên
-Output: Tổng các số hạng lẻ trong A
b) Mô tả thuật toán
-Bước 1: Nhập n và nhập dãy số
-Bước 2: s←0; i←1;
-Bước 3: Nếu a[i] không chia hết cho 2 thì s←s+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 s
-Bước 7: Kết thúc
Cho số nguyên dương N và dãy số nguyên a1,a2,…,aN. Tính tổng của các số dương trong dãy số trên. (2đ)
a. Xác định input và output ?
b. Xây dựng thuật toán cho bài toán trên bằng phương pháp liệt kê (hoặc sơ đồ khối)?
c. Mô phỏng thuật toán với ví dụ dưới đây: Với N =
i | ||||||||
ai | 3 | -4 | 6 | -5 | -12 | 7 | 0 | 8 |
Tổng |
Bài 1. Bài toán và thuật toán (xác định bài toán, viết thuật toán): Cho dãy gồm N số nguyên a1,...,aN. a) Tính tổng các số hạng có giá trị chẵn/lẻ có trong dãy. b) Tính tổng các số hạng có vị trí chẵn/lẻ có trong dãy. c) Đếm các số hạng có giá trị chẵn/lẻ/bằng K có trong dã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;
}
Cho dãy số nguyên N=6{7;9;1;2;6;10}
Yêu cầu tìm giá trị lớn nhất của dãy số
-Xác định bài toán
- Nêu ý tưởng
- Mô phỏng thuật toán qua bảng mô phỏng
Xác định bài toán
Input: Dãy n số
Output: Max của dãy số
Ý tưởng: Sẽ sắp xếp dãy theo chiều tăng dần, rồi xuất ra số cuối cùng của dãy
cho số nguyên dương n và dãy số a gồm n số a1,a2,,,,,an tính hiển thị tổng các số nguyên âm lẽ trong dãy số a đã cho
a xác định bài toán
b trình bài ý tưởng
c viết thuật toán
d mô phỏng bài toán
#include <bits/stdc++.h>
using namespace std;
long long n,i,x,t;
int main()
{
cin>>n;
t=0;
for (i=1; i<=n; i++)
{
cin>>x;
if ((x<0) and (x%2!=0)) t=t+x;
}
cout<<t;
return 0;
}
Hãy xác định input output và nêu thuật toán giải quyết các bài toán sau:
a) cho N và 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 8?
b) Cho dãy A gồm N số nguyên . Hãy cho biết trong dãy A có bao nhiêu số chẵn ?
c) Cho số nguyên dương N và dãy số A gồm N số nguyên a1,a2,...aN viết thuật toán tính tổng của các phần tử có giá trị chẵn trong A
d) Tính tổng : S=1+2+3+...+N (với N là số nguyên dương, N>1)
e)Tính giai thừa :P=N!=1\(\times\)2\(\times\)3\(\times\)...\(\times\)N ( với N là số nguyên dương , N\(\ge\)1)
d:
#include <bits/stdc++.h>
using namespace std;
long long i,n,s;
int main()
{
cin>>n;
s=0;
for (i=1; i<=n; i++)
s=s+i;
cout<<s;
return 0;
}
Cho dãy A gồm N số nguyên a1,a2 ,…aN và số nguyên dương k. Hãy cho biết trong dãy A có bao nhiêu số là bội của k?
Hãy xác định bài toán và mô tả thuật toán giải các bài toán
Input: N, dãy số nguyên a1,a2,...,aN và k
Output: Số phần tử là bội của k
Thuật toán liệt kê:
Bước 1: Nhập N, dãy số nguyên a1,a2,...,aN và k
Bước 2: d←0; i←1;
Bước 3: Nếu i>N thì in ra d và kết thúc
Bước 4: Nếu ai chia hết cho k thì d←d+1;
Bước 5: i←i+1; quay lại bước 3
Hãy xác định input và output của bài toán và trình bày thuật toán để giải bài toán Cho dãy A gồm N số nguyên A … .AN - 1
a ) Hãy tính tổng của tất cả các số trong dãy
b ) Hãy đếm tất cả các số chẵn trong dãy .
c ) Hãy số lớn nhất trong dãy . d ) Hãy sắp xếp các số trong dãy thành dãy tăng
a:
#include <bits/stdc++.h>
using namespace std;
long long n,x,i,t;
int main()
{
cin>>n;
t=0;
for (i=1; i<=n; i++)
{
cin>>x;
t=t+x;
}
cout<<t;
return 0;
}