Tin đại cương - Tran Manh Tuan TLU Bai8 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả c...
TIN ĐẠI CƯƠNG Bài 8, 12: MẢNG MỘT CHIỀU, HAI CHIỀU Trần Mạnh Tuấn Bộ môn Hệ thống thông tin, Khoa CNTT Trường Đại học Thủy Lợi Nội dung Khái niệm mảng chiều Khai báo mảng Sử dụng mảng Bài tập Mảng chiều Khái niệm mảng chiều Ví dụ: Nhập liệu điểm mơn Tin học đại cương cho 120 sinh viên lớp N03 Đếm hiển thị hình điểm thi Sử dụng 120 biến phân biệt d1, d2, ., d120 để lưu trữ xử lí điểm thi có nhược điểm - Việc quản lí biến khơng dễ dàng - Khó sử dụng cấu trúc lặp - Khơng tổng qt, khó nâng cấp chương trình → Giải pháp: sử dụng kiểu liệu mảng Mảng Mảng dãy hữu hạn phần tử có kiểu liệu chiếm vùng liên tục nhớ Các phần tử mảng truy cập thông qua số chúng (index) Ví dụ : Mảng A gồm giá trị nguyên kiểu int Các phần tử đánh số từ đến 4 Khai báo mảng Cú pháp : [] ; Ví dụ : int A[5] ; //mảng A có phần tử dạng int float B[10] ; //mảng B có 10 phần tử dạng float với số từ đến Khai báo mảng Có thể gán giá trị ban đầu cho phần tử mảng khai báo mảng cách đặt giá trị hai dấu { } Ví dụ : int A[5] = {100, 34, 23, 213, 500 } ; int A[ ] = {100, 34, 23, 213, 500 } ; //không định cỡ mảng → khai báo mảng với cỡ đủ để chứa giá trị khởi tạo int A[5] = {100, 34, 23 } ; //điền giá trị từ đầu mảng, điền phần lại với giá trị Sử dụng mảng Sử dụng số đặt cặp dấu [ ] để truy cập đến phần tử mảng : [] int A[5] = {100, 34, 23, 213, 500 } ; → A[0] = 100, A[1] = 34, A[2] = 23, A[3] = 213, A[4] = 500 Có thể thao tác với phần tử mảng thao tác với biến thông thường A[0] -= ; → A[3] *= ; → A[0] = 91 A[3] = 426 size = ; → A[size-1] = 500 //phần tử cuối mảng A[size/2] = A[2] = 23 Chỉ số biến nguyên biểu thức nguyên Chú ý Kích thước mảng phải cố định (mảng tĩnh) Mảng thay đổi kích thước q trình chương trình chạy Có thể dùng có tên để định kích thước mảng Trình biên dịch báo lỗi Trình biên dịch khơng báo lỗi kich_thuoc biến kich_thuoc Mảng a có 10 thay đổi giá trị phần tử Chú ý Chỉ số đánh số từ đến size-1 C++ "cho phép" vượt khỏi miền, trình biên dịch khơng phát lỗi Trong trường hợp Kết không đốn trước Lập trình viên phải tự kiểm sốt miền số Lỗi hay gặp : float diemthi[120] ; diemthi[120] = 8.5; //chỉ số 120 nằm miền Một số thao tác với mảng Nhập liệu cho mảng In giá trị mảng hình 10 Một số tốn với mảng Tính tổng phần tử mảng Đếm số phần tử dương Tìm phần tử lớn nhất/nhỏ vị trí chúng mảng Sắp xếp mảng theo thứ tự tăng dần/giảm dần 11 Tìm phần tử lớn dãy Trong trường hợp mảng có nhiều số lớn vị trí hiển thị nào? 12 Sắp xếp dãy số theo thứ tự tăng 13 Bài tập Bài 1: Nhập vào dãy 10 số thực Hiển thị dãy số hình Bài 2: Nhập vào dãy 10 số nguyên số nguyên n Đếm vị trí phần tử dãy có giá trị Bằng n Nhỏ n Là ước số n Bài 3: Nhập vào dãy 10 số thực Tìm phần tử nhỏ vị trí dãy số 14 Mảng hai chiều 5.1 Khái niệm mảng hai chiều Mảng hai chiều mở rộng mảng chiều Về chất, danh sách mảng chiều Các phần tử mảng truy cập thơng qua hai số chúng Ví dụ : Mảng A gồm 3*5 phần tử biểu diễn sau 15 5.2 Khai báo mảng chiều Cú pháp : [] [] ; Ví dụ : int A[3[5] ; //mảng A có 3*5 phần tử dạng int Truy cập đến phần tử mảng : [] [] Ví dụ : A[1][2] = ; 16 Khai báo mảng chiều (tiếp) Có thể gán giá trị ban đầu cho phần tử mảng khai báo mảng Ví dụ : int A[3][5] = { {0, 1, 2, 3, 4} , //hàng thứ {5, 6, 7, 8, 9} , //hàng thứ hai {10, 11, 12, 13, 14} //hàng thứ ba }; Hoặc: int A[3][5] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14} ; Hai cách làm tương đương 17 5.4 Sử dụng mảng chiều ◮ Tương tự mảng chiều, khác có hai số đặt hai cặp dấu [ ] ◮ Nhắc lại : ◮ kích thước mảng phải cố định ◮ số đánh số từ ◮ lập trình viên phải tự kiểm sốt miền số trình biên dịch khơng báo lỗi số vượt khỏi miền 18 5.5 Một số thao tác Nhập liệu cho mảng In giá trị mảng hình 19 5.5 Một số tốn với mảng hai chiều Tương tự với mảng chiều, có tốn thực tính tốn tồn mảng : - Tính tổng phần tử mảng, hàng, cột - Đếm số phần tử dương mảng - Tìm phần tử lớn nhất/nhỏ vị trí chúng mảng, hàng, cột Các toán quy mảng chiều: tính tốn hàng, cột hay đường chéo mảng hai chiều Nhập vào ma trận đối xứng 20 Bài tập Bài 1: Nhập vào ma trận vng số thực Tính trung bình cộng phần tử đường chéo ma trận Bài 2: Nhập vào ma trận đối xứng số thực Bài 3: Nhập vào ma trận vng số thực có 5x5 phần tử Tính tổng, tích ma trận 21 ... Nhập liệu điểm mơn Tin học đại cương cho 120 sinh viên lớp N03 Đếm hiển thị hình điểm thi Sử dụng 120 biến phân biệt d1, d2, ., d120 để lưu trữ xử lí điểm thi có nhược điểm - Việc quản lí biến... chiều Tương tự với mảng chiều, có tốn thực tính tốn tồn mảng : - Tính tổng phần tử mảng, hàng, cột - Đếm số phần tử dương mảng - Tìm phần tử lớn nhất/nhỏ vị trí chúng mảng, hàng, cột Các toán... thao tác với phần tử mảng thao tác với biến thông thường A[0] -= ; → A[3] *= ; → A[0] = 91 A[3] = 426 size = ; → A[size-1] = 500 //phần tử cuối mảng A[size/2] = A[2] = 23 Chỉ số biến