Tải bản đầy đủ (.pdf) (46 trang)

Bài giảng Tin học đại cương: Phần 2 - ThS. Phạm Thanh Bình (4)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (697.84 KB, 46 trang )

Bài 8 – Mảng một chiều (Dãy)
 Khái niệm mảng một chiều
 Khai báo mảng
 Nhập/xuất mảng
 Các bài toán về mảng một chiều 

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 1


1. Khái niệm mảng một chiều
 Mảng một chiều là một công cụ cho 
phép tổ chức quản lý dữ liệu dưới dạng 
“dãy”
 Ví dụ:
Xét dãy sA:
ố sau đây:
5
4
7
1
9
A0

A1

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT


A2

A3

A4

Tin học đại cương 2 ­ 2


Các phần tử của mảng
 Mảng một chiều bao gồm nhiều phần tử, 
mỗi phần tử được đặc trưng bởi hai yếu 
tố: Giá trị của phần tử và vị trí của phần 
tử trong mảng
 Một phần tử bất kỳ của mảng thường 
được kí hiệu là A[i], trong đó:
+ A là tên mảng
+ i là vị trí của phần tử trong mảng
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 3


2. Khai báo mảng
 Muốn sử dụng mảng một chiều trong 
chương trình thì phải khai báo nó
 Khai báo mảng thực chất là sự khai báo 
đồng thời nhiều biến có cùng kiểu dữ liệu
 Có nhiều cách khai báo khác nhau


Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 4


Các cách khai báo mảng một chiều:
 Cách 1:
KiểuDL  TênMảng[Số phần tử tối đa];
Ví dụ 1:
int  A[100];  
Mảng này có tối đa 100 phần tử, mỗi phần 
tử là một số nguyên
Khai báo trên sẽ tạo ra 100 biến nguyên: 
A[0], A[1], ... , A[99]
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 5


Ví dụ 2:
char  B[60];  
Mảng này có tối đa 60 phần tử, mỗi 
phần tử là một kí tự
Khai báo trên sẽ tạo ra 60 biến kiểu kí tự: 
B[0], B[1], ... , B[59]
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT


Tin học đại cương 2 ­ 6


 Cách 2:
vector   <KiểuDL>  TênMảng(Số phần tử tối đa);
Ví dụ:
vector  < int >  A(100);  
Mảng này có tối đa 100 phần tử, mỗi phần 
tử là một số nguyên
Chú ý: Muốn sử dụng cách khai báo này thì phải 
viết dòng sau đây ở đầu chương trình:
#include  <vector>

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 7


3. Nhập/xuất mảng
 Nhập dữ liệu cho mảng từ bàn phím:
Thực chất là nhập dữ liệu cho nhiều biến, 
do đó cần sử dụng vòng lặp.
Ví dụ 1:
Nhập một dãy số nguyên có 8 phần tử.
Cần lặp 8 lần!
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT


Tin học đại cương 2 ­ 8


Các lệnh nhập:
int  A[8]; 
for (int i = 0; i < 8; i ++) 
{
  cout << "Nhap so thu " << i << " = " ;
  cin >> A[i] ;
 }
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 9


Các lệnh xuất (hiển thị):
  Ví dụ 2:
Hiện dãy số vừa nhập (8 phần tử) ra màn hình.
  cout << "Day vua nhap la: ";
for (int i = 0; i < 8; i ++)  cout << A[i] << "  " ;

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 10


Chương trình:
#include <iostream>

using namespace std;
main()
 { int  A[8]; 
   for (int i = 0; i < 8; i ++) 
    {
      cout << "Nhap so thu " << i << " = " ;
      cin >> A[i] ;
     }
   cout << "Day vua nhap la: ";
   for (int i = 0; i < 8; i ++)  cout << A[i] << "  " ;
Bộ môn Kỹ thuật máy tính – Khoa 
 }
CNTT
Tin học đại cương 2 ­ 11


Cách 2:
#include <iostream>
#include <vector>
using namespace std;
main()
 { vector  < int >  A(8); 
   for (int i = 0; i < 8; i ++) 
    {
      cout << "Nhap so thu " << i << " = " ;
      cin >> A[i] ;
     }
   cout << "Day vua nhap la: ";
B   for (int i = 0; i < 8; i ++)  cout << A[i] << "  " ;
ộ môn Kỹ thuật máy tính – Khoa 

 }
CNTT
Tin học đại cương 2 ­ 12


Bài tập:
 Nhập một dãy số thực có N phần tử (N là 
một giá trị bất kỳ nhập từ bàn phím).
Hiện dãy vừa nhập ra màn hình.

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 13


Nội dung chương trình:
#include <iostream>
using namespace std;
main()
 { float  A[100];  int N ;
   cout << "Nhap N = ";  cin >> N ;
   for (int i = 0; i < N; i ++) 
    {
      cout << "Nhap so thu " << i << " = " ;
      cin >> A[i] ;
     }
   cout << "Day vua nhap la: ";
   for (int i = 0; i < N; i ++)  cout << A[i] << "  " ;
Bộ } môn Kỹ thuật máy tính – Khoa 

CNTT
Tin học đại cương 2 ­ 14


4. Các bài toán về mảng một chiều 
 Bài toán tính tổng, đếm số lượng, trung 
bình cộng
 Bài toán tìm giá trị lớn nhất, nhỏ nhất, vị 
trí phần tử
 Thêm ­ bớt phần tử
 Bài toán đổi chỗ, sắp xếp dãy
...
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 15


Ví dụ 1:
 Nhập một dãy có N số thực từ bàn phím 
rồi tính tổng của chúng
Hiện tổng và hiện dãy ra màn hình.

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 16


Thuật toán tính tổng?

+ Ban đầu tổng S bằng 0
+ Mỗi khi nhập được một số thì đem cộng 
nó vào tổng S
(Lặp lại N lần)
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 17


Thuật toán tính tổng N số:
   S = 0;
   cout << "Nhap N = ";  cin >> N ;
   for (int i = 0; i < N; i ++) 
    {
      cout << "Nhap so thu " << i << " = " ;
      cin >> A[i] ;
      S = S + A[i] ;
     }
   
cout << " Tong S = " << S ;
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 18


Bài tập:
 Nhập một dãy có N số thực từ bàn phím 
rồi tính trung bình cộng của chúng

Hiện trung bình cộng và hiện dãy ra màn 
hình.

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 19


Bài tập ứng dụng:
1. Nhập lượng mưa của bảy ngày trong tuần 
từ bàn phím rồi tính lượng mưa trung bình. 
2. Giả sử một học kì có N môn học. Hãy 
nhập điểm các môn học từ bàn phím rồi 
tính điểm trung bình của học kì
(tạm coi các môn có hệ số bằng nhau)
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 20


Ví dụ 2:
 Nhập một dãy có N số thực từ bàn phím rồi tính 
tổng các phần tử dương của dãy.
Hiện tổng và hiện dãy ra màn hình.
Thuật toán:
+ Ban đầu tổng S bằng 0
+ Lần lượt so sánh các phần tử của dãy với 0:
Nếu Phần tử A[i] > 0 thì cộng A[i] vào tổng S

if  (A[i] > 0 )   S = S + A[i];
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 21


Bài tập:
 Nhập một dãy có N số nguyên từ bàn 
phím rồi tính tổng các phần tử chẵn của 
dãy.
 Hiện tổng và hiện dãy ra màn hình.

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 22


Ví dụ 3:
 Nhập một dãy có N số nguyên từ bàn phím rồi 
đếm số lượng các phần tử chẵn của dãy.
 Hiện số lượng đếm được và hiện dãy ra màn 
hình.
Thuật toán:
+ Cần khai báo thêm biến chứa số lượng: D
+ Ban đầu biến D bằng 0
+ Kiểm tra lần lượt từng phần tử của dãy:
Nếu Phần tử A[i] chẵn  thì tăng D lên 1
Bộ môn Kỹ thuật máy tính – Khoa 

         if  (A[i] % 2 == 0 )   D = D + 1;
CNTT
Tin học đại cương 2 ­ 23


Bài tập:
1. Nhập một dãy có N kí tự từ bàn phím. 
Đếm xem trong dãy có bao nhiêu chữ 'K'.
 Hiện số lượng và hiện dãy ra màn hình.
2. Nhập một dãy có N số nguyên từ bàn phím 
rồi tính trung bình cộng các phần tử chẵn 
của dãy.
 Hiện trung bình cộng và hiện dãy ra màn 
hình.
Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 24


Bài tập ứng dụng:
 Nhập điểm tổng kết của N sinh viên trong 
lớp từ bàn phím.
Hãy cho biết lớp có bao nhiêu sinh viên 
đạt học bổng (điểm tổng kết ≥ 7)

Bộ môn Kỹ thuật máy tính – Khoa 
CNTT

Tin học đại cương 2 ­ 25



×