CHƯƠNG 4CHƯƠNG 4
ẢẢ
M
Ả
NGM
Ả
NG
(Array)(Array)
(Array)(Array)
1. Khái niệm1. Khái niệm
1.
Khái
niệm1.
Khái
niệm
y Mảng là mộttậphợp các biến có cùng kiểu
d
ữ
liệunằmliêntiếp nhau tron
g
bộ nhớ và
được tham chiếubởimột tên chung chính là
tên
mảng
tên
mảng
.
y Mỗiphầntử củamảng được tham chiếuthông
qua
chỉ
mục
(index)
qua
chỉ
mục
(index)
.
1. Khái niệm1. Khái niệm
1.
Khái
niệm1.
Khái
niệm
y Nếumảng có n phầntử thì phầntửđầutiên
có chỉ mụclà0 và phầnt
ử
cuốicóchỉ mụclà
n-1.
ể
h
h ế
đế
ộ
hầ
ử
dù
ê
y Đ
ể
t
h
am c
h
i
ế
u
đế
nm
ộ
tp
hầ
nt
ử
ta
dù
n
g
t
ê
n
mảng và chỉ mụccủaphầntửđược đặttrong
cặp
dấu
[]
cặp
dấu
[]
.
Ví dụ:a[0]
Số
phần
tử
trong
mảng
được
gọi
là
kích
thước
y
Số
phần
tử
trong
mảng
được
gọi
là
kích
thước
củamảng. luôn
cốđịnh
,phải được
xác định
trước
và
không
đổi
trong
suốt
quá
trình
thực
trước
và
không
đổi
trong
suốt
quá
trình
thực
hiệnchương trình.
2. Mảng mộtchiều2. Mảng mộtchiều
2.
Mảng
một
chiều2.
Mảng
một
chiều
Khai báo một mảng một chiều
y Cú pháp:
type arrayName[elements];
−
type
: kiểu dữ liệu của mỗi phần tử mảng.
−
element
s
: số
p
hần tử có tron
g
mản
g
p g g
−
arrayName
: tên mảng
● Ví d
ụ
: int a
[
5
]
ụ []
a
a[0] a[1] a[2] a[3] a[4]
2. Mảng mộtchiều2. Mảng mộtchiều
2.
Mảng
một
chiều2.
Mảng
một
chiều
y Mảng phải được khai báo tường minh
y Kích thước (tính bằng byte) của mảng được
tính theo công thức:
Total_size = sizeof(type) * elements
Ví dụ:
int num[100];
Mảng num có kích thước là:
2bytes * 100 = 200bytes (giả sử int chiếm 2
bytes)
2. Mảng mộtchiều2. Mảng mộtchiều
2.
Mảng
một
chiều2.
Mảng
một
chiều
y Mổi phần tử mảng là một biến thông thường.
Ví dụ:
int num[3];
num[0] = 2; //gán 2 cho phần tử num[0]
num
[
1
]
= num
[
0
]
+ 3 //num
[
1
]
có
g
iá trị 5
[] []
[] g
num[2] = num[0] + num[1]; //num[2] có giá trị 7
cout << num
[
1
];
//
In ra
g
iá tr
ị
5
[];//
g
ị
2. Mảng mộtchiều2. Mảng mộtchiều
2.
Mảng
một
chiều2.
Mảng
một
chiều
Khai báo và khởi tạo mảng một chiều
y Cú pháp:
type
arrayName
[]= {
value1, value2, , valuen
};
type
arrayName
[]= {
value1, value2, , valuen
};
y
Lưu ý
:
Khô kh i bá kí h th ớ ả
−
Khô
n
g
kh
a
i
bá
o
kí
c
h
th
ư
ớ
c m
ả
n
g
.
− Số lượng phầntử trong mảng là số các giá
ấ
ặ
ấ
ặ
trịđượccun
g
c
ấ
ptron
g
c
ặ
pd
ấ
un
g
o
ặ
c {},
được phân cách nhau bởidấuphẩy.
2. Mảng mộtchiều2. Mảng mộtchiều
2.
Mảng
một
chiều2.
Mảng
một
chiều
y Ví dụ:
int soChan[] = {2,4,6,8,10};
Mản
g
soChan có 5
p
hần tử lần lư
ợ
t là:
g
p ợ
soChan[0] có giá trị là 2
soChan
[
1
]
có
g
iá tr
ị
là 4
[] g ị
soChan
[4] có giá trị là 10
soChan
[4]
có
giá
trị
là
10
2. Mảng mộtchiều2. Mảng mộtchiều
2.
Mảng
một
chiều2.
Mảng
một
chiều
Ví dụ:Tạomộtmảng nguyên a có N phầntử.Mỗiphầntử có
giá
trị
là
chỉ
mục
của
nó
.
In
mảng
ra
màn
hình
.
giá
trị
là
chỉ
mục
của
nó
.
In
mảng
ra
màn
hình
.
#include <iostream.h>
#include <conio.h>
#define N 10
#define
N
10
void main()
{
int a[N];
int
a[N];
for(int i=0 ; i < N ; i++)
a[i] = i ;
t"I
\
"
cou
t
<<
"I
n mang:
\
n
"
;
for(int i=0 ; i < N ; i++)
cout << “a[“ << i <<”] = ” << a[i] <<
endl;
}
Ví dụ : Nhập vào một mảng số nguyên sau đó sắp Ví dụ : Nhập vào một mảng số nguyên sau đó sắp
xếptheothứ tự tăng dầnxếptheothứ tự tăng dần
xếp
theo
thứ
tự
tăng
dần
xếp
theo
thứ
tự
tăng
dần
#include <iostream.h>
#define n 5
#define n 5
main ( )
{
int a [ n ] ; int i j t ;
int a [ n ] ; int i
,
j
,
t ;
for ( i = 0 ; i < n ; i ++)//
nh
ậ
p m
ả
ng
{ cout<<“a [“<<i<<“] = “; cin>>a[i]; cout<<endl; }
ắ
ế
for ( i = 0 ; i < n - 1 ; i ++)//
s
ắ
p
x
ế
p
for ( j = i + 1 ; j < n ; j ++ )
if ( a [ i ]
>
a [j ] )
if ( a [ i ] a [j ] )
{ t = a [ i ] ; a [ i ] = a [ j ]; a [j ] = t ; }
for ( i = 0 ; i < n ; i ++ )//
xu
ấ
t m
ả
ng
cout<<setw(3)<<a[i];
cout<<setw(3)<<a[i];
getch ( );
}
Ví dụ: Đổi một số nguyên dương thập phân Ví dụ: Đổi một số nguyên dương thập phân
thành số nh
ị
phân thành số nh
ị
phân
ịị
void main()
{ n=46
2
2
int i,j=0, n, np[20];
cout<<“n=”; cin>>n;
do
0
2
2
5
23
11
1
1
2
2
n%2
{
np[j]= n%2;
j++;
1
2
1
2
1
0
2
0
n = n/2;
}while(n>0);
cout<<“dang nhi phan: ”;
np
0 1 1 1 0 1
for(i=j-1 ; i>0 ; i )
cout<<setw(3)<<np[i];
getch();
np[j]
}
Sử dụng hàm tạosố ngẫu nhiênSử dụng hàm tạosố ngẫu nhiên
Sử
dụng
hàm
tạo
số
ngẫu
nhiênSử
dụng
hàm
tạo
số
ngẫu
nhiên
y C++ cung cấp hàm random để tạo ra các số
ẫ
n
gẫ
u nhiên.
y Cú pháp:
int random(int n)
y Kết quả của hàm là tạo ra các số nguyên ngẫu
nhiên từ 0 đến n-1
y Khi sử dụng random ta phải gọi
randomize
ể ẫ
đ
ể
khởi tạo chế độ tạo số n
gẫ
u nhiên.
y Để sử dụng các hàm trên thì trong chương
ìh hảikh ibá h iệ
dlib h
tr
ì
n
h
p
hải
kh
a
i
bá
o t
h
ư v
iệ
n <st
dlib
.
h
>
V
í d
ụ
: t
ạ
o mản
g
n
gẫ
u nhiên và in ra màn hình.
V
í d
ụ
: t
ạ
o mản
g
n
gẫ
u nhiên và in ra màn hình.
ụ ạ ggụ ạ gg
#include <iostream.h>
#include <conio h>
#include
<conio
.
h>
#include <iomanip.h>
#include <stdlib.h>
void main()
{
randomize();
randomize();
cout <<"Tao mang ngẫu nhiên :\n";
for (int i=0; i<n; i++)
a[i] random(100);
a[i]
=
random(100);
for(int j=0; j<n; j++)
cout <<setw(3)<<a[j];
}
3. Mảng nhiềuchiều3. Mảng nhiềuchiều
3.
Mảng
nhiều
chiều3.
Mảng
nhiều
chiều
y C/C++ hổ trợ mảng nhiềuchiều. Dạng đơn
g
iảnnhấtcủamản
g
nhiềuchiềulàmản
g
hai
chiều.
ả
h
h ề
h
hấ
là
ả
ủ
hữ
y M
ả
n
g
h
ai c
h
i
ề
ut
h
ựcc
hấ
t
là
m
ả
n
g
c
ủ
an
hữ
n
g
mảng mộtchiều. Ta có thể xem mảng hai
chiều
là
một
ma
trận
gồm
các
hàng
và
các
cột
chiều
là
một
ma
trận
gồm
các
hàng
và
các
cột
3. Mảng nhiềuchiều3. Mảng nhiềuchiều
3.
Mảng
nhiều
chiều3.
Mảng
nhiều
chiều
Khai báo mảng hai chiều
type arrayName[rows][columns];
rows
:số hàng
−
rows
:
số
hàng
−
columns
: số cột
Ví dụ: Khai báo mảng số nguyên 3 hàng 4 cột
Ví
dụ:
Khai
báo
mảng
số
nguyên
3
hàng
4
cột
int a[3][4]
3. Mảng nhiềuchiều3. Mảng nhiềuchiều
3.
Mảng
nhiều
chiều3.
Mảng
nhiều
chiều
y
Khai báo và khởi tạo mảng hai chiều
y Cú pháp:
type arrayName[][columns] = {
{value1,value2, ,valueN},
{value1,value2, ,valueN},
{ },
{value1,value2, ,valueN}};
3. Mảng nhiềuchiều3. Mảng nhiềuchiều
3.
Mảng
nhiều
chiều3.
Mảng
nhiều
chiều
y Số phầntử củamỗihàngphảibằng số cột
y Số hàng củakhaibáomảng hai chiều để
t
r
ố
n
g
.
t ố g
y Số hàng củamảng đượcxácđịnh dựavàosố
hàng
trong
phần
khởi
tạo
Giá
trị
các
phần
tử
hàng
trong
phần
khởi
tạo
.
Giá
trị
các
phần
tử
trong mỗihàngđược đặttrongcặp {}, các
hàng
phân
cách
nhau
bằng
một
dấu
phẩy
hàng
phân
cách
nhau
bằng
một
dấu
phẩy
.
y Ví dụ:
int a[][4] = {{1234} {5678}{9101112}};
int
a[][4]
=
{{1
,
2
,
3
,
4}
,
{5
,
6
,
7
,
8}
,
{9
,
10
,
11
,
12}};
#include <time.h>
#include <stdlib.h>
void main()
{ int a[4][3];
d(ti (NULL))
sran
d(ti
me
(NULL))
;
for(int i=0 ; i<4 ; i++)
for(int j=0 ; j<3 ; j++)
for(int
j=0
;
j<3
;
j++)
a[i][j] = rand()%10;
for(int i
=
0 ; i<4 ; i++)
for(int
i0
;
i<4
;
i++)
{
for(int j=0 ; j<3 ; j++)
cout << a[i][j] << " ";
cout << endl;
}
}
#include <iostream.h>
#include <conio.h>
void main()
{
{
int a[][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},
{
13
,
14
,
15
,
16
}};
{,,,}};
int sum=0;
for(int i
=
0;i
<
4;i
++
)
for(int
i0
;
i4
;
i)
for(int j=0 ; j<4 ; j++)
if(i
==
j)
if(i j)
sum += a[i][j];
cout <<
“
Tong duong cheo chinh la:
”
<< sum;
cout
<<
Tong
duong
cheo
chinh
la:
<<
sum;
}