1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

5 327 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 493,32 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trang 1

Lập trình C++

nâng cao

1 Dzoãn Xuân Thanh

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

2

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

3

< Kiểu dữ liệu > < Tên mảng > [ < Số phần tử tối đa của mảng> ] ;

TRUY XUẤT

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

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

6

Trang 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];

}

}

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);

}

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];

}

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”;

}

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;

}

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;

}

12

Trang 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;

}

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;

}

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;

}

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;

}

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.

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;

}

18

Trang 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;

}

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;

}

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;

}

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

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;

}

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;

}

24

Trang 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;

}

25

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w