GIÁO TRÌNH TIN HỌC_LẬP TRÌNH C ++ NÂNG CAO potx

5 326 0
GIÁO TRÌNH TIN HỌC_LẬP TRÌNH C ++ NÂNG CAO potx

Đang tải... (xem toàn văn)

Thông tin tài liệu

22/04/2011 1 Lập trình C++ nâng cao 22/04/2011 1 Dzoãn Xuân Thanh 22/04/2011 1 KHÁI NIỆM  Mảng thực chất là một biến được cấp phát bộ nhớ liên tục và bao gồm nhiều biến thành phần.  Các thành phần của mảng là tập hợp các biến có cùng kiểu dữ liệu và cùng tên. Do đó để truy xuất các biến thành phần, ta dùng cơ chế chỉ mục. 22/04/2011 2 0 1 2 3 4 5 6 7 8 9 Giá trị Vị trí KHAI BÁO  int a[100]; //Khai bao mang so nguyen a gom 100 phan tu  float b[50]; //Khai bao mang so thuc b gom 50 phan tu  char str[30]; //Khai bao mang ky tu str gom 30 ky tu 22/04/2011 3 < Kiểu dữ liệu > < Tên mảng > [ < Số phần tử tối đa của mảng> ] ; TRUY XUẤT Vị trí 0 1 2 3 4 A[0] A[1] A[2] A[3] A[4] 22/04/2011 4 GÁN GIÁ TRỊ BAN ĐẦU CHO MẢNG int a[5] = {3, 6, 8, 1, 12};  a[0] = 3, a[1] = 6, a[2] = 8, … int a[10] = {0};  a[0]=a[1]=a[2]=a[3]=…=a[9]=0 22/04/2011 5 CÁC THAO TÁC TRÊN MẢNG  Nhập  Xuất (liệt kê)  Tìm kiếm  Đếm  Sắp xếp  Kiểm tra mảng thỏa điều kiện cho trước  Tách/ ghép mảng  Chèn / xóa 22/04/2011 6 22/04/2011 2 NHẬP XUẤT MẢNG #define MAX 100 void NhapMang (int a[], int n) { for (int i = 0; i < n; i ++) { cout<<“Nhap phan tu thu “<<i<<“: “; cin>>a[i]; } } 22/04/2011 7 void XuatMang (int a[], int n) { for (int i = 0; i < n; i ++) cout<<a[i]<<“\t”; } void main ( ) { int a[MAX] , n; cout<<“Nhap kich thuoc mang: “; cin>>n; NhapMang (a,n); cout<<“Cac gia tri cua mang vua nhap: ”<<endl; XuatMang (a,n); } 22/04/2011 8 LIỆT KÊ CÁC PHẦN TỬ THỎA ĐK CHO TRƯỚC Mẫu 1: void LietKeXXX(int a[], int n) { for (int i = 0; i<n; i++) if (a[i] thỏa điều kiện) Xuất a[i]; } Mẫu 2: void LietKeXXX(int a[], int n, int x) { for (int i = 0; i<n; i++) if (a[i] thỏa điều kiện so với x) Xuất a[i]; } 22/04/2011 9 Ví dụ 1: Liệt kê các phần tử có giá trị chẵn trong mảng void LietKeChan(int a[], int n) { for (int i = 0; i<n; i++) if (a[i] %2 ==0) cout<<a[i]<<“\t”; } Ví dụ 2: Liệt kê các phần tử có giá trị lớn hơn x trong mảng void LietKeLonHonX(int a[], int n, int x) { for (int i = 0; i<n; i++) if (a[i] > x) cout<<a[i]<<“\t”; } 22/04/2011 10 ĐẾM Mẫu 1: int DemXXX(int a[], int n) { int d = 0; for (int i = 0; i<n; i++) if (a[i] thỏa điều kiện) d++; return d; } 22/04/2011 11 Mẫu 2: int DemXXX(int a[], int n, int x) { int d = 0; for (int i = 0; i<n; i++) if (a[i] thỏa điều kiện so với x) d++; return d; } 22/04/2011 12 22/04/2011 3 Ví dụ 1: Đếm các phần tử có giá trị là số nguyên tố bool LaSNT(int k) { int d = 0; for (int i = 1; i <= k; i++) if (k % i == 0) d++; return (d == 2); } int DemSNT(int a[], int n) { int d = 0; for (int i = 0; i<n; i++) if (LaSNT(a[i]) ==true) d++; return d; } 22/04/2011 13 Ví dụ 2: Đếm các phần tử có giá trị nhỏ hơn x có trong mảng int DemNhoHonX(int a[], int n, int x) { int d = 0; for (int i = 0; i<n; i++) if (a[i] < x) d++; return d; } 22/04/2011 14 TÌM KIẾM Mẫu 1: Tìm và trả về vị trí phần tử có giá trị lớn nhất int TimVTMax(int a[], int n) { int vtmax = 0; for (int i = 0; i < n; i++) if (a[i] > a[vtmax]) vtmax = i; return vtmax; } 22/04/2011 15 Mẫu 2: Tìm vị trí phần tử có giá trị x (nếu x không xuất hiện trong mảng trả về -1) int TimVTX(int a[], int n, int x) { for (int i = 0; i < n; i++) if (a[i] == x) return i; return -1; } 22/04/2011 16 KIỂM TRA XEM MẢNG CÓ THỎA ĐIỀU KIỆN CHO TRƯỚC TH1: kiểm tra tồn tại một phần tử trong mảng thỏa điều kiện nào đó cho trước  tìm phần tử thỏa điều kiện để kết luận. TH2: kiểm tra tất cả các phần tử thỏa điều kiện nào đó cho trước  tìm phần tử không thỏa điều kiện để kết luận mảng không thỏa điều kiện. 22/04/2011 17 Mẫu TH1: bool KiemTraTonTaiXXX(int a[], int n) { for (int i = 0; i<n; i++) if (a[i] thỏa điều kiện) return true; return false; } Mẫu TH2: bool KiemTraXXX(int a[], int n) { for (int i = 0; i<n; i++) if (a[i] không thỏa điều kiện) return false; return true; } 22/04/2011 18 22/04/2011 4 Ví dụ 1: Kiểm tra xem mảng có tồn tại số lẻ không? bool KiemTraTonTaiLe(int a[], int n) { foreach (int giatri in a) if (giatri % 2 != 0) return true; return false; } 22/04/2011 19 Ví dụ 2: Kiểm tra xem mảng có toàn giá trị âm không? (true: có/ false: không) bool KiemTraToanAm(int a[], int n) { for (int i = 0; i<n; i++) if (a[i] >= 0) return false; return true; } 22/04/2011 20 TÍNH TỔNG, GIÁ TRỊ TRUNG BÌNH CÓ ĐIỀU KIỆN Mẫu tính tổng: int TongXXX(int a[], int n) { int s = 0; for (int i = 0; i<n; i++) if (a[i] thỏa điều kiện) s += a[i]; return s; } 22/04/2011 21 Mẫu tính trung bình: float TrungBinhXXX(int a[], int n) { int s = 0; int d = 0; for (int i = 0; i<n; i++) if (a[i] thỏa điều kiện) { s += giatri; d ++; } if (d==0) return 0; return (float) s / d; } 22/04/2011 22 Ví dụ 1: Tính tổng các phần tử có giá trị lẻ trong mảng int TongLe(int a[], int n) { int s = 0; for (int i = 0; i<n; i++) if (a[i] %2!=0) s += a[i]; return s; } 22/04/2011 23 Ví dụ 2: Tính giá trị trung bình các phần tử có giá trị âm trong mảng float TrungBinhAm(int a[], int n) { long s = 0; int d = 0; for (int i = 0; i<n; i++) if (a[i] < 0) { s += a[i]; d++; } if (d == 0) return 0; return (float)s / d; } 22/04/2011 24 22/04/2011 5 SẮP XẾP Mẫu phương thức sắp thứ tự tăng: void SapTang(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]) HoanVi(a[i], a[j]); } void HoanVi(int &a, int &b) { int tam = a; a = b; b = tam; } 22/04/2011 25 . 22/04/2011 1 Lập trình C+ + nâng cao 22/04/2011 1 Dzoãn Xuân Thanh 22/04/2011 1 KHÁI NIỆM  Mảng th c chất là một biến đư c cấp phát bộ nhớ liên tu c và bao gồm nhiều biến thành phần.  Ca c. phần.  Ca c thành phần của mảng là tập hợp ca c biến có cùng kiểu dữ liệu và cùng tên. Do đó để truy xuất ca c biến thành phần, ta dùng c chế chỉ mu c. 22/04/2011 2 0 1 2. Liệt kê c c phần tử c giá trị chẵn trong mảng void LietKeChan(int a[], int n) { for (int i = 0; i<n; i++) if (a[i] %2 ==0) cout<<a[i]<<“ ”; } Ví dụ 2: Liệt kê c c phần tử c giá

Ngày đăng: 25/07/2014, 05:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan