các kĩ thuật đếm,tìm kiếm tính tổng,tính trung bình cộng,...... đây là các kĩ thuật trong môn lập trình bên công nghệ thông tin .... Trong thời gian được học tập tại trường, với chuyên ngành công nghệ thông tin em đã đúc kết được số kiến thức và hiểu thêm về chuyên ngành này. Nay em chọn đề tài “Mảng hai chiều và các thao tác xử lý trên mảng hai chiều các số nguyên” để làm đồ án cơ sở ngành. Nội dung của đồ án gồm 3 chương, chương 1 là những thao tác xử lý trên mảng hai chiều các số nguyên như nhập mảng từ bàn phím và gieo ngẫu nhiên, xuất mảng, thao tác tìm kiếm, đếm, tính tổng, tính trung bình cộng trên ma trận, trên dòng, cột cho số chẵn, số lẻ, số âm, số dương….. và thao tác sắp xếp tăng dần, giảm dần cho số nguyên trong ma trận, thao tác đổi chỗ hai dòng, hai cột bất kì. Chương 2 gồm các thuật toán xử lý trên ma trận vuông như nhập mảng, xuất mảng, tìm kiếm, đếm, tính tổng, tính trung bình cộng trên đường chéo chính, chéo phụ, dưới đường chéo chính, chéo phụ, phía trên, phía dưới đường chéo chính, đường chéo phụ. Chương 3 là chương trình minh họa với menu lựa chọn cho các thao tác xử lý trên mảng hai chiều các số nguyên.
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG THƯƠNG TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CƠ SỞ NGÀNH
MẢNG HAI CHIỀU VÀ CÁC THAO TÁC
XỬ LÝ TRÊN MẢNG HAI CHIỀU CÁC
Trang 2MỤC LỤC
Trang 3DANH MỤC CÁC HÌNH
LỜI MỞ ĐẦU
Trong thời gian được học tập tại trường, với chuyên ngành công nghệ thông tin
em đã đúc kết được số kiến thức và hiểu thêm về chuyên ngành này Nay em chọn đề
tài “Mảng hai chiều và các thao tác xử lý trên mảng hai chiều các số nguyên” để
làm đồ án cơ sở ngành
Nội dung của đồ án gồm 3 chương, chương 1 là những thao tác xử lý trên mảng hai chiều các số nguyên như nhập mảng từ bàn phím và gieo ngẫu nhiên, xuất mảng, thao tác tìm kiếm, đếm, tính tổng, tính trung bình cộng trên ma trận, trên dòng, cột cho
số chẵn, số lẻ, số âm, số dương… và thao tác sắp xếp tăng dần, giảm dần cho số nguyên trong ma trận, thao tác đổi chỗ hai dòng, hai cột bất kì Chương 2 gồm các thuật toán xử lý trên ma trận vuông như nhập mảng, xuất mảng, tìm kiếm, đếm, tính tổng, tính trung bình cộng trên đường chéo chính, chéo phụ, dưới đường chéo chính, chéo phụ, phía trên, phía dưới đường chéo chính, đường chéo phụ Chương 3 là chương trình minh họa với menu lựa chọn cho các thao tác xử lý trên mảng hai chiều các số nguyên
Trang 4Chương 1 MẢNG 2 CHIỀU VÀ CÁC THUẬT TOÁN XỬ LÝ
TRÊN MẢNG 2 CHIỀU CÁC SỐ NGUYÊN1.1 Nhập mảng
1.1.1 Nhập mảng từ bàn phím
Yêu Cầu: Nhập mảng hai chiều các số nguyên gồm n dòng, m cột từ bàn phím.
• Input: Nhập m,n và các phần tử trong mảng hai chiều các số nguyên
Ngược lại thì thoát
cout<<"a["<<i<<"]["<<j<<"]";
cin>>a[i][j];
}}
1.1.2 Nhập mảng gieo ngẫu nhiên
Yều cầu: Nhập mảng hai chiều số nguyên gieo ngẫu nhiên gồm n dòng, m cột.
• Input: Nhập mảng hai chiều gieo ngẫu nhiên n dòng, m cột số nguyên
Trang 5B3.2: Nếu j<n thì sang bước 3.2.1
B3.2.1: gieo ngẫu nhiên a[i][j]
B3.2.2: j=j+1 Quay lại bước 3.2 Ngược lại sang bước 3.3B3.3: i=i+1 Quay lại bước 3
Ngược lại thì thoát
srand((unsigned)(time(NULL)));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++){
a[i][j] = -20 + rand() % (50 - (-20) + 1);
cin >> a[i][j];
}}
1.2 Xuất mảng
Yêu cầu:
• Input: Nhập m,n và các phần tử trong mảng hai chiều các số nguyên
• Output: xuất mảng hai chiều số nguyên
Ngược lại thì thoát
Hàm cài đặt:
void xuat(int a[][50], int m, int n)
{
cout << "ma tran vua nhap la:\n";
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++)
cout << a[i][j] << "\t";
Trang 6cout << "\n";
}}
1.3 Tìm kiếm
1.3.1 Trên cả ma trận
1.3.1.1 Số dương
Yêu cầu:
• Input: khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các số là số dương trên cả ma trận.
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B4: Nếu j<n thì sang bước 4.1
B4.1: Nếu a[i][j] là dương in các phần tử dương
B4.2: j=j+1 Quay lại bước 4.Ngược lại sang B5
B5: i=i+1 Quay lại bước 3
Ngược lại thì thoát
}
1.3.1.2 Số âm
Yêu cầu:
• Input: khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các số âm trên cả ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B4: Nếu j<n thì sang bước 4.1
B4.1: Nếu a[i][j] là âm in các phần tử âm
B4.2: j=j+1 Quay lại bước 4.Ngược lại sang B5
B5: i=i+1 Quay lại bước 3
Ngược lại thì thoát
Trang 7cout <<"so Am la:"<< a[i][j]<<endl;
B4.2: j=j+1 Quay lại bước 4.Ngược lại sang B5
B5: i=i+1 Quay lại bước 3
Ngược lại thì thoát
B4.2: j=j+1 Quay lại bước 4.Ngược lại sang B5
B5: i=i+1 Quay lại bước 3
Ngược lại thì thoát
Trang 81.3.1.5 Số nguyên tố
Yêu cầu:
• Input: khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các số nguyên tố trên cả ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B4: Nếu j<n thì sang bước 4.1
B4.1: Nếu a[i][j] là nguyên tố in các phần tử số nguyên tố
B4.2: j=j+1 Quay lại bước 4.Ngược lại sang B5
B5: i=i+1 Quay lại bước 3
Ngược lại thì thoát
Hàm cài đặt:
• Hàm kiểm tra nguyên tố
int KTNT(int x){
• Input: khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các số hoàn thiện trên cả ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B4: Nếu j<n thì sang bước 4.1
B4.1: Nếu a[i][j] là hoàn thiện in các phần tử số nguyên tố
B4.2: j=j+1 Quay lại bước 4.Ngược lại sang B5
B5: i=i+1 Quay lại bước 3
Ngược lại thì thoát
Hàm cài đặt:
• Hàm Kiểm tra hoàn thiện
Trang 9int KTHT(int x){
• Input: khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các số chính phương trên cả ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B4: Nếu j<n thì sang bước 4.1
B4.1: Nếu a[i][j] là chính phương in các phần tử số chính phương
B4.2: j=j+1 Quay lại bước 4.Ngược lại sang B5
B5: i=i+1 Quay lại bước 3
Ngược lại thì thoát
Hàm cài đặt:
• Hàm kiểm tra số chính phương
int KTCP(int x){
Trang 101.3.2 Trên dòng
1.3.2.1 Số dương
Yêu cầu:
• Input: Khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các số dương trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B3.1: Nếu j<n thì sang bước 3.2
B3.2: Nếu a[i][j] dương thì in các số dương trên dòng i
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
if (a[i][j]> 0)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các phần tử âm trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B3.1: Nếu j<n thì sang bước 3.2
B3.2: Nếu a[i][j] âm thì in các số âm trên dòng i
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
Hàm cài đặt:
void TimAmDong(int a[][MAX], int m, int n)
Trang 11if (a[i][j]< 0)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các phần tử chẵn trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B3.1: Nếu j<n thì sang bước 3.2
B3.2: Nếu a[i][j] chẵn thì in các số chẵn trên dòng i
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
if (a[i][j] % 2 == 0)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các phần tử lẻ trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
Trang 12B3: Cho j=0.
B3.1: Nếu j<n thì sang bước 3.2
B3.2: Nếu a[i][j] lẻ thì in các số lẻ trên dòng i
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
if (a[i][j] % 2 != 0)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các phần tử số nguyên tố trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B3.1: Nếu j<n thì sang bước 3.2
B3.2: Nếu a[i][j] là nguyên tố thì in các số nguyên tố trên dòng i
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
if (KTNT(a[i][j])==1)
cout << a[i][j] <<" ";}
cout << endl;
}
}
Trang 131.3.2.6 Số hoàn thiện
Yêu cầu:
• Input: Khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các phần tử là số hoàn thiện trên từng dòng ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B3.1: Nếu j<n thì sang bước 3.2
B3.2: Nếu a[i][j] là hoàn thiện thì in các số hoàn thiện trên dòng i
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
if (KTHT(a[i][j]) == 1)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng 2 chiều có m dòng,n cột số nguyên
• Output: Tìm các số hoàn thiện trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 3
B3: Cho j=0
B3.1: Nếu j<n thì sang bước 3.2
B3.2: Nếu a[i][j] là chính phương thì in các số chính phương trên dòng i.B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4
B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
Trang 14if (KTCP(a[i][j]) == 1)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng hai chiều số nguyên có m dòng,n cột
• Output: Tìm các phần tử dương trên cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 3
B3: Cho i=0
B3.1: Nếu i<m thì sang bước 3.2
B3.2: Nếu a[i][j] dương thì in các số dương trên cột j
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
cout <<"so duong tren cot"<< j <<":";
for (int i = 0; i < m; i++){
if (a[i][j]> 0)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng 2 chiều số nguyên gồm m dòng,n cột
• Output: Tìm các phần tử âm trên từng cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 3
B3: Cho i=0
B3.1: Nếu i<m thì sang bước 3.2
B3.2: Nếu a[i][j] âm thì in các số âm trên cột j
Trang 15B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
cout <<"so am tren cot"<< j <<":";
for (int i = 0; i < m; i++){
if (a[i][j]< 0)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng 2 chiều số nguyên gồm m dòng,n cột
• Output: Tìm các số chẵn trên từng cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 3
B3: Cho i=0
B3.1: Nếu i<m thì sang bước 3.2
B3.2: Nếu a[i][j] chẵn thì in các số chẵn trên cột j
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
cout <<"so chan tren cot"<< j <<":";
for (int i = 0; i < m; i++){
if (a[i][j] % 2 == 0)
cout << a[i][j] <<" ";}
Trang 16• Input: khai báo mảng 2 chiều số nguyên gồm m dòng,n cột.
• Output: Tìm các số lẻ trên từng cột của ma trận
cout <<"so le tren cot"<< j <<":";
for (int i = 0; i < m; i++){
if (a[i][j] % 2 != 0)
cout << a[i][j] <<" ";}
• Input: khai báo mảng hai chiều số nguyên gồm m dòng,n cột
• Output: Tìm các phần tử là số nguyên tố trên từng cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 3
B3: Cho i=0
B3.1: Nếu i<m thì sang bước 3.2
B3.2: Nếu a[i][j] là nguyên tố thì in các số nguyên tố trên cột j
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
cout <<"so nguyen to tren cot" << j <<":";
for (int i = 0; i < m; i++){
if (KTNT(a[i][j])==1)
cout << a[i][j] <<" ";}
Trang 17• Input: Khai báo mảng hai chiều số nguyên gồm m dòng,n cột
• Output: Tìm các số hoàn thiện trên từng cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 3
B3: Cho i=0
B3.1: Nếu i<m thì sang bước 3.2
B3.2: Nếu a[i][j] là hoàn thiện thì in các số hoàn thiện trên cột j
B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
cout <<"so hoan thien tren cot"<< j <<":";
for (int i = 0; i < m; i++){
if (KTHT(a[i][j]) == 1)
cout << a[i][j] <<" ";}
• Input: Khai báo mảng 2 chiều số nguyên gồm m dòng,n cột
• Output: Tìm các phần tử là số chính phương trên từng cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 3
B3: Cho i=0
B3.1: Nếu i<m thì sang bước 3.2
B3.2: Nếu a[i][j] là chính phương thì in các số chính phương trên cột j.B3.3: j=j+1 Quay lại bước 3.1 Ngược lại sang bước 3.4
B3.4: i=i+1 Quay lại bước 3
Ngược lại thì thoát
cout <<"so chinh phuong tren cot"<< j <<":";
for (int i = 0; i < m; i++){
if (KTCP(a[i][j]) == 1)
Trang 18cout << a[i][j] <<" ";}
cout << endl;
}}
1.4 Đếm
1.4.1 Trên cả ma trận
1.4.1.1 Số chẵn
Yêu cầu:
• Input: khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng các số chẵn trên cả ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
B2.1: khai báo dem=0;
if (a[i][j]% 2 == 0)
dem++;
} return dem;
}
1.4.1.2 Số lẻ
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số lẻ trên cả ma trận
Trang 19B2.2: i=i+1 Quay lại bước 2
Ngược lại thì giá trị trở về là dem và thoát
if (a[i][j]% 2 != 0)
dem++;
} return dem;
}
1.4.1.3 Số dương
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số dương trên cả ma trận
if (a[i][j]> 0)
dem++;
} return dem;
}
1.4.1.4 Số âm
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số dương trên cả ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
Trang 20if (a[i][j]<0)
dem++;
} return dem;
}
1.4.1.5 Số nguyên tố
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng là số nguyên tố trên cả ma trận
if (KTNT(a[i][j]==1))
dem++;
} return dem;
Trang 21• Output: Đếm số lượng là số hoàn thiện trên cả ma trận.
if (KTHT (a[i][j]==1))
dem++;
} return dem;
}
1.4.1.7 Số chính phương
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output:Đếm số lượng số chính phương trên cả ma trận
Trang 221.4.2 Trên dòng
1.4.2.1 Số dương
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số dương trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số âm trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
Trang 23• Input: khai báo mảng 2 chiều số nguyên có m dòng,n cột.
• Output: Đếm số lượng số chẵn trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
• Input: Khai báo mảng 2 chiều số nguyên gồm m dòng,n cột
• Output: Đếm số lượng số lẻ trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
Trang 24Ngược lại thì giá trị trở về là đếm và thoát.
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số nguyên tố trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số hoàn thiện trên từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
Trang 25B2.1: khai báo biến dem=0;
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số chính phương treen từng dòng của ma trận
Giải thuật:
B1: Cho i=0;
B2: Nếu i<m thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
Trang 261.4.3 Trên cột:
1.4.3.1 Số dương
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số dương trên cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
• Input: khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số âm trên cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
Trang 27• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số chẵn trên cột cảu ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số lẻ trên cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
Trang 28Ngược lại thì giá trị trở về là đếm và thoát.
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: In số lượng số nguyên tố trên cột cảu ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số hoàn thiện trên cột của ma trận
Giải thuật:
B1: Cho j=0;
Trang 29B2: Nếu j<n thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Đếm số lượng số chính phương trên cột của ma trận
Giải thuật:
B1: Cho j=0;
B2: Nếu j<n thì chuyển qua bước 2.1
B2.1: khai báo biến dem=0;
Trang 30• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Tính tổng các số dương trên cả ma trận
B3.2: Nếu j<n thì sang bước 3.2.1
B3.2.1: Nếu a[i][j] dương thì tổng+=a[i][j];
B3.2.2: j=j+1 Quay lại bước 3.2 Ngược lại sang bước 3.3B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Tính tổng các số âm trên cả ma trận
B3.2: Nếu j<n thì sang bước 3.2.1
B3.2.1: Nếu a[i][j] âm thì tổng+=a[i][j];
B3.2.2: j=j+1 Quay lại bước 3.2 Ngược lại sang bước 3.3B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
Hàm cài đặt:
int TongAm(int a[][MAX], int m, int n)
Trang 31int tong = 0;
for (int i = 0; i <m; i++)
for (int j = 0; j < n; j++){
B3.2: Nếu j<n thì sang bước 3.2.1
B3.2.1: Nếu a[i][j] chẵn thì tổng+=a[i][j];
B3.2.2: j=j+1 Quay lại bước 3.2 Ngược lại sang bước 3.3B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
Trang 32B3.1: Cho j=0.
B3.2: Nếu j<n thì sang bước 3.2.1
B3.2.1: Nếu a[i][j] lẻ thì tổng+=a[i][j];
B3.2.2: j=j+1 Quay lại bước 3.2 Ngược lại sang bước 3.3B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Tính tổng các số nguyên tố trên cả ma trận
B3.2: Nếu j<n thì sang bước 3.2.1
B3.2.1: Nếu a[i][j] là nguyên tố thì tổng+=a[i][j];
B3.2.2: j=j+1 Quay lại bước 3.2 Ngược lại sang bước 3.3B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
Trang 33• Input: Khai báo mảng 2 chiều số nguyên có m dòng, n cột
• Output: Tính tổng các số hoàn thiện trên cả ma trận
B3.2: Nếu j<n thì sang bước 3.2.1
B3.2.1: Nếu a[i][j] là hoàn thiện thì tổng+=a[i][j];
B3.2.2: j=j+1 Quay lại bước 3.2 Ngược lại sang bước 3.3B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,n cột
• Output: Tính tổng các số chính phương trên cả ma trận
B3.2: Nếu j<n thì sang bước 3.2.1
B3.2.1: Nếu a[i][j] là chính phương thì tổng+=a[i][j];
B3.2.2: j=j+1 Quay lại bước 3.2 Ngược lại sang bước 3.3B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
if (KTCP(a[i][j]) == 1)
tong = tong + a[i][j];
Trang 34• Input: Khai báo mảng 2 chiều số nguyên có k dòng,n cột.
• Output: Tính tổng các giá trị dương trên dòng k của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho j=0;
B3: Nếu j<n thì chuyển qua bước 3.1
B3.1: Nếu a[k][j] dương thì sang bước 3.2
B3.2: tổng= tong+a[k][j]
B3.3: j=j+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[k][j];
}}
return tong;
}
1.5.2.2 Số âm
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có k dòng,n cột
• Output: Tính tổng các giá trị âm trên dòng k của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho j=0;
B3: Nếu j<n thì chuyển qua bước 3.1
B3.1: Nếu a[k][j] âm thì sang bước 3.2
B3.2: tổng= tong+a[k][j]
B3.3: j=j+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
Hàm cài đặt:
int TongAmDongK(int a[][MAX], int k, int n)
{
int tong = 0;
Trang 35for (int j = 0; j < n; j++)
{
if (a[k][j]<0){
tong += a[k][j];
}}
return tong;
}
1.5.2.3 Số chẵn
Yêu cầu:
• Input: khai báo mảng 2 chiều số nguyên có k dòng,n cột
• Output: Tính tổng các giá trị chẵn trên dòng k của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho j=0;
B3: Nếu j<n thì chuyển qua bước 3.1
B3.1: Nếu a[k][j] chẵn thì sang bước 3.2
B3.2: tổng= tong+a[k][j]
B3.3: j=j+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[k][j];
}}
return tong;
}
1.5.2.4 Số lẻ
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có k dòng,n cột
• Output: tính tổng các phần tử lẻ trên dòng k của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho j=0;
B3: Nếu j<n thì chuyển qua bước 3.1
B3.1: Nếu a[k][j] lẻ thì sang bước 3.2
B3.2: tổng= tong+a[k][j]
B3.3: j=j+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
Trang 36tong += a[k][j];
}}
return tong;
}
1.5.2.5 Số nguyên tố
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có k dòng,n cột
• Output: Tính tổng các phần tử nguyên tố trên dòng k của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho j=0;
B3: Nếu j<n thì chuyển qua bước 3.1
B3.1: Nếu a[k][j] là nguyên tố thì sang bước 3.2
B3.2: tổng= tong+a[k][j]
B3.3: j=j+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[k][j];
}}
return tong;
}
1.5.2.6 Số hoàn thiện
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có k dòng,n cột
• Output: Tính tổng các phần tử là số hoàn thiện trên dòng k của ma trận
Trang 37B3.1: Nếu a[k][j] là hoàn thiện thì sang bước 3.2.
B3.2: tổng= tong+a[k][j]
B3.3: j=j+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[k][j];
}}
return tong;
}
1.5.2.7 Số chính phương
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có k dòng,n cột
• Output: Tính tổng các phần tử là chính phương trên dòng k của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho j=0;
B3: Nếu j<n thì chuyển qua bước 3.1
B3.1: Nếu a[k][j] là chính phương thì sang bước 3.2
B3.2: tổng= tong+a[k][j]
B3.3: j=j+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[k][j];
}}
Trang 38• Input: Khai báo mảng 2 chiều số nguyên có m dòng,c cột.
• Output: Tính tổng các giá trị dương trên cột C của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho i=0;
B3: Nếu i<m thì chuyển qua bước 3.1
B3.1: Nếu a[i][c] dương thì sang bước 3.2
B3.2: tổng= tong+a[i][c]
B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[i][c];
}}
return tong;
}
1.5.3.2 Số âm
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng,c cột
• Output: Tính tổng các giá trị âm trên cột C của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho i=0;
B3: Nếu i<m thì chuyển qua bước 3.1
B3.1: Nếu a[i][c] âm thì sang bước 3.2
B3.2: tổng= tong+a[i][c]
B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[i][c];
}}
return tong;
Trang 391.5.3.3 Số chẵn
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng, c cột
• Output: Tính tổng các giá trị chẵn trên cột C của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho i=0;
B3: Nếu i<m thì chuyển qua bước 3.1
B3.1: Nếu a[i][c] chẵn thì sang bước 3.2
B3.2: tổng= tong+a[i][c]
B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[i][c];
}}
return tong;
}
1.5.3.4 Số lẻ
Yêu cầu:
• Input: Khai báo mảng 2 chiều số nguyên có m dòng, c cột
• Output: Tính tổng các giá tri chẵn trên cột C của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho i=0;
B3: Nếu i<m thì chuyển qua bước 3.1
B3.1: Nếu a[i][c] lẻ thì sang bước 3.2
B3.2: tổng= tong+a[i][c]
B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
Trang 40if (a[i][c]%2!=0){
tong += a[i][c];
}}
return tong;
}
1.5.3.5 Số nguyên tố
Yêu cầu:
• Input: khai báo mảng 2 chiều số nguyên có m dòng, c cột
• Output: Tính tổng các giá trị là nguyên tố trên cột C của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho i=0;
B3: Nếu i<m thì chuyển qua bước 3.1
B3.1: Nếu a[i][c] là nguyên tố thì sang bước 3.2
B3.2: tổng= tong+a[i][c]
B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
tong += a[i][c];
}}
return tong;
}
1.5.3.6 Số hoàn thiện
Yêu cầu:
• Input: khai báo mảng 2 chiều số nguyên có m dòng,c cột
• Output: Tính tổng các giá trị là hoàn thiện trên cột C của ma trận
Giải thuật:
B1: Khai báo biến tong=0;
B2: Cho i=0;
B3: Nếu i<m thì chuyển qua bước 3.1
B3.1: Nếu a[i][c] là hoàn thiện thì sang bước 3.2
B3.2: tổng= tong+a[i][c]
B3.3: i=i+1 Quay lại bước 3
Ngược lại thì giá trị trở về là tổng và thoát
Hàm cài đặt: