1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #include <iostream> using namespace std; #define MAX 100 // MẢNG 1 CHIỀU // 1. HÀM NHẬP SỐ PHẦN TỬ void NhapN(int &N) { do { cout << "Moi ban nhap so phan tu cua mang N = "; cin >> N; // 0 < N <= MAX // Điều kiện phải ngược lại if (N <= 0 || N > MAX) cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n"; } while (N <= 0 || N > MAX); } // 2. HÀM NHẬP MẢNG void NhapMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << "A[" << i << "]= "; cin >> A[i]; } } // 3. HÀM XUẤT MẢNG void XuatMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << A[i] << "\t"; } } // DẠNG ĐẾM // 1. Khai báo biến đếm // 2. Duyệt // 2.1 Nếu // tăng đếm // 3. Trả về kết quả đếm // 236 * Cho 2 mảng a,b. Hãy cho biết số lần xuất hiện của mảng a trong mảng b // VD : // A : 1 2 // B : 1 2 1 2 3 //==> 2 int Dem_Xuat_Hien(int A[], int B[], int Na, int Nb) { int i = 0, j = 0, dem = 0, flag = 0, vt = 0; for (i = 0; i < Nb; i++) { if (B[i] == A[0] && Nb - i >= Na) { vt = i; for (j = 0, flag = 1; j < Na; j++, vt++) { if (A[j] != B[vt]) { flag = 0; break; } } if (flag == 1) { dem++; } } } return dem; } int main() { int Na = 0; NhapN(Na); int A[MAX]; NhapMang(A, Na); cout << "MANG A BAN DAU\n"; XuatMang(A, Na); cout << "\n"; int Nb = 0; NhapN(Nb); int B[MAX]; NhapMang(B, Nb); cout << "MANG B BAN DAU\n"; XuatMang(B, Nb); cout << "\n"; int kq = Dem_Xuat_Hien(A, B, Na, Nb); cout << "Bai tap 236 la " << kq; cout << "\n"; return 0; } |
Lập trình là niềm đam mê !!!
Lập trình máy tính (gọi tắt là lập trình; tiếng Anh: programming) là kỹ thuật cài đặt một hoặc nhiều thuật toán trừu tượng có liên quan với nhau bằng một hoặc nhiều ngôn ngữ lập trình để tạo ra một chương trình máy tính. Lập trình có các thành tố nghệ thuật, khoa học, toán học, và kỹ nghệ. Lập trình nhiều thì bạn sẽ thấy niềm vui và sự hứng thú torng đó. CNTT lập trình tuyệt vời.
Thứ Hai, 2 tháng 1, 2017
Bài tập 236 * Cho 2 mảng a,b. Hãy cho biết số lần xuất hiện của mảng a trong mảng b
Bài tập 320-321-322-323-324: Tính Tổng các số dương trong ma trận
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | #include <iostream> using namespace std; #define MAX 100 //MẢNG 2 CHIỀU - MA TRẬN VUÔNG // 1. NHẬP SỐ PHẦN TỬ CỦA MA TRẬN void NhapN(int &N) { do { cout << "Nhap N = "; cin >> N; if (N <= 0 || N > MAX) cout << "Nhap sai xin vui long nhap lai!!!\n"; } while (N <= 0 || N > MAX); } // 2. NHẬP MA TRẬN void Nhap_MaTran(int A[][MAX], int N) { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cout << "A["<<i<<"]["<<j<<"] = "; cin>>A[i][j]; } } } // 3. XUẤT MA TRẬN void Xuat_MaTran(int A[][MAX], int N) { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cout << A[i][j] << "\t"; } cout << "\n"; } } // TÍNH TOÁN // 1. Khai báo biến Tổng // 2.Duyệt bởi 2 vòng lặp // 2.1 Nếu // Tăng tổng // 3. Trả về tổng //320 Tổng các số dương trong ma trận thực int Tong_Duong(int A[][MAX], int N) { int S = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (A[i][j] > 0) S += A[i][j]; } } return S; } //321 Tích các số lẻ trong ma trận nguyên int Tich_Le(int A[][MAX], int N) { int P = 1; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (A[i][j] % 2 != 0) P *= A[i][j]; } } return P; } //322 Tổng giá trị trên 1 dòng ma trận thực // VD: // 1 3 4 ==> 8 // 4 5 1 ==> 10 // 1 4 2 ==> 7 int Tong_Dong_BK(int A[][MAX], int N, int dong) { int S = 0; for (int j = 0; j < N; j++) { S += A[dong][j]; } return S; } void Xuat_Tong_Dong(int A[][MAX], int N) { for (int i = 0; i < N; i++) { int kq = Tong_Dong_BK(A, N, i); cout << "Tong dong thu " << i << " la " << kq<<"\n"; } } //323 Tích giá trị dương trên 1 cột ma trận thực int Tich_Cot_Duong_BK(int A[][MAX], int N, int cot) { int P = 1; for (int i = 0; i < N; i++) { if (A[i][cot] > 0) P *= A[i][cot]; } return P; } void Xuat_Tich_Cot_Duong(int A[][MAX], int N) { for (int j = 0; j < N; j++) { int kq = Tich_Cot_Duong_BK(A, N, j); cout << "Tich cot duong thu " << j << " la " << kq << "\n"; } } //324 Tổng giá trị dương trên 1 dòng ma trận thực int Tong_Dong_Duong_BK(int A[][MAX], int N, int dong) { int S = 0; for (int j = 0; j < N; j++) { if (A[dong][j]> 0) S += A[dong][j]; } return S; } void Xuat_Tong_Dong_Duong(int A[][MAX], int N) { for (int i = 0; i < N; i++) { int kq = Tong_Dong_Duong_BK(A, N, i); cout << "Tong dong thu " << i << " la " << kq << "\n"; } } void main() { int A[MAX][MAX], N = 0; // Nhập số phần tử của ma trận NhapN(N); // Nhập ma trận Nhap_MaTran(A, N); // Xuất ma trận cout << "Ma tran ban dau gom : \n"; Xuat_MaTran(A, N); cout << "\n"; int kq_Tongduong = Tong_Duong(A, N); cout << "BAI TAP 320 : Tong duong la " << kq_Tongduong; cout << "\n"; int kq_Tichle = Tich_Le(A, N); cout << "BAI TAP 321 : Tich le la " << kq_Tichle; cout << "\n"; cout << "BAI TAP 322 tong dong la \n"; Xuat_Tong_Dong(A, N); cout << "\n"; cout << "BAI TAP 323 Tich cot duong la \n"; Xuat_Tich_Cot_Duong(A, N); cout << "\n"; cout << "BAI TAP 324 Tong dong duong la \n"; Xuat_Tong_Dong_Duong(A, N); cout << "\n"; } |
Thuật toán sắp xếp QuickSort
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #include <iostream> using namespace std; #define MAX 100 // MẢNG 1 CHIỀU // 1. HÀM NHẬP SỐ PHẦN TỬ void NhapN(int &N) { do { cout << "Moi ban nhap so phan tu cua mang N = "; cin >> N; // 0 < N <= MAX // Điều kiện phải ngược lại if (N <= 0 || N > MAX) cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n"; } while (N <= 0 || N > MAX); } // 2. HÀM NHẬP MẢNG void NhapMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << "A[" << i << "]= "; cin >> A[i]; } } // 3. HÀM XUẤT MẢNG void XuatMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << A[i] << "\t"; } } // Hoán vị 2 số void Swap(int &a, int &b) { int t = a; a = b; b = t; } void QuickSort(int a[], int left, int right) { int i = 0, j = 0, x = 0; x = a[(left + right) / 2]; i = left; j = right; do { while (a[i] < x) i++; while (a[j] > x) j--; if (i <= j) { Swap(a[i], a[j]); i++; j--; } } while (i <= j); if (left<j) QuickSort(a, left, j); if (i<right) QuickSort(a, i, right); } int main() { int N = 0; NhapN(N); int A[MAX]; NhapMang(A, N); cout << "MANG BAN DAU\n"; XuatMang(A, N); cout << "\n"; QuickSort(A, 0, N - 1); cout << "Mang sau khi sap xep : \n"; XuatMang(A, N); cout << "\n"; return 0; } |
Thuật toán sắp xếp Chọn trực tiếp - Thuật toán sắp xếp Selection Sort
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #include <iostream> using namespace std; #define MAX 100 // MẢNG 1 CHIỀU // 1. HÀM NHẬP SỐ PHẦN TỬ void NhapN(int &N) { do { cout << "Moi ban nhap so phan tu cua mang N = "; cin >> N; // 0 < N <= MAX // Điều kiện phải ngược lại if (N <= 0 || N > MAX) cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n"; } while (N <= 0 || N > MAX); } // 2. HÀM NHẬP MẢNG void NhapMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << "A[" << i << "]= "; cin >> A[i]; } } // 3. HÀM XUẤT MẢNG void XuatMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << A[i] << "\t"; } } // Hoán vị 2 số void Swap(int &a, int &b) { int t = a; a = b; b = t; } void SelectionSort(int A[], int N) { int VTmin = 0, i = 0, j = 0; // chỉ số phần tử nhỏ nhất trong dãy hiện hành for (i = 0; i < N - 1; i++)//chỉ số đầu tiên của dãy hiện hành { VTmin = i; for (j = i + 1; j < N; j++) if (A[VTmin] > A[j]) VTmin = j; // lưu vtrí phần tử hiện nhỏ nhất Swap(A[VTmin], A[i]); } } int main() { int N = 0; NhapN(N); int A[MAX]; NhapMang(A, N); cout << "MANG BAN DAU\n"; XuatMang(A, N); cout << "\n"; SelectionSort(A, N); cout << "Mang sau khi sap xep : \n"; XuatMang(A, N); cout << "\n"; return 0; } |
Thuật toán sắp xếp Nỗi Bọt - Thuật toán sắp xếp Bubble Sort
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #include <iostream> using namespace std; #define MAX 100 // MẢNG 1 CHIỀU // 1. HÀM NHẬP SỐ PHẦN TỬ void NhapN(int &N) { do { cout << "Moi ban nhap so phan tu cua mang N = "; cin >> N; // 0 < N <= MAX // Điều kiện phải ngược lại if (N <= 0 || N > MAX) cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n"; } while (N <= 0 || N > MAX); } // 2. HÀM NHẬP MẢNG void NhapMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << "A[" << i << "]= "; cin >> A[i]; } } // 3. HÀM XUẤT MẢNG void XuatMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << A[i] << "\t"; } } // Hoán vị 2 số void Swap(int &a, int &b) { int t = a; a = b; b = t; } void BubbleSort(int A[], int N) { int i = 0, j = 0; for (i = 0; i < N - 1; i++) for (j = N - 1; j > i; j--) if (A[j] < A[j - 1])// nếu sai vị trí thì đổi chỗ Swap(A[j], A[j - 1]); } int main() { int N = 0; NhapN(N); int A[MAX]; NhapMang(A, N); cout << "MANG BAN DAU\n"; XuatMang(A, N); cout << "\n"; BubbleSort(A, N); cout << "Mang sau khi sap xep : \n"; XuatMang(A, N); cout << "\n"; return 0; } |
Thuật toán sắp xếp chèn trực tiếp - Thuật toán sắp xếp Insertion Sort
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #include <iostream> using namespace std; #define MAX 100 // MẢNG 1 CHIỀU // 1. HÀM NHẬP SỐ PHẦN TỬ void NhapN(int &N) { do { cout << "Moi ban nhap so phan tu cua mang N = "; cin >> N; // 0 < N <= MAX // Điều kiện phải ngược lại if (N <= 0 || N > MAX) cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n"; } while (N <= 0 || N > MAX); } // 2. HÀM NHẬP MẢNG void NhapMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << "A[" << i << "]= "; cin >> A[i]; } } // 3. HÀM XUẤT MẢNG void XuatMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << A[i] << "\t"; } } // Hoán vị 2 số void Swap(int &a, int &b) { int t = a; a = b; b = t; } void InsertionSort(int A[], int N) { int pos = 0, i = 0; // Khởi tạo giá trị int x = 0;//lưu giá trị a[i] tránh bị ghi đè khi dời chỗ các phần tử. for (i = 1; i < N; i++) //đoạn a[0] đã sắp xếp { x = A[i]; pos = i - 1; // tìm vị trí chèn x while ((pos >= 0) && (A[pos] > x)) { //kết hợp dời chỗ các phần tử sẽ đứng sau x trong dãy mới A[pos + 1] = A[pos]; pos--; } A[pos + 1] = x; // chèn x vào dãy } } int main() { int N = 0; NhapN(N); int A[MAX]; NhapMang(A, N); cout << "MANG BAN DAU\n"; XuatMang(A, N); cout << "\n"; InsertionSort(A, N); cout << "Mang sau khi sap xep : \n"; XuatMang(A, N); cout << "\n"; return 0; } |
Thuật toán sắp xếp: Interchange Sort (đổi chỗ trực tiếp)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include <iostream> using namespace std; #define MAX 100 // MẢNG 1 CHIỀU // 1. HÀM NHẬP SỐ PHẦN TỬ void NhapN(int &N) { do { cout << "Moi ban nhap so phan tu cua mang N = "; cin >> N; // 0 < N <= MAX // Điều kiện phải ngược lại if (N <= 0 || N > MAX) cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n"; } while (N <= 0 || N > MAX); } // 2. HÀM NHẬP MẢNG void NhapMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << "A[" << i << "]= "; cin >> A[i]; } } // 3. HÀM XUẤT MẢNG void XuatMang(int A[], int N) { for (int i = 0; i < N; i++) { cout << A[i] << "\t"; } } // Hoán vị 2 số void Swap(int &a, int &b) { int t = a; a = b; b = t; } void InterChangeSort(int A[], int N) { for (int i = 0; i < N - 1; i++) { for (int j = i + 1; j < N; j++) { if (A[i] > A[j]) Swap(A[i], A[j]); } } } int main() { int N = 0; NhapN(N); int A[MAX]; NhapMang(A, N); cout << "MANG BAN DAU\n"; XuatMang(A, N); cout << "\n"; InterChangeSort(A, N); cout << "Mang sau khi sap xep \n"; XuatMang(A, N); cout << "\n"; return 0; } |
Đăng ký:
Nhận xét (Atom)