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

PHƯƠNG PHÁP LẬP TRÌNH_4 pdf

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 (482.33 KB, 19 trang )

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ầ


ê
y Đ

t
h
am c
h
i
ế
u
đế
nm

tp
hầ
nt

ta

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

kích
thước
y
Số
phần
tử
trong
mảng
được
gọi

kích
thước
củamảng. luôn
cốđịnh
,phải được

xác định
trước

không
đổi
trong
suốt
quá
trình
thực
trước

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
]

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


o

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
]


g
iá tr

là 4
[] g ị

soChan
[4] có giá trị là 10
soChan
[4]



giá

trị



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ị

chỉ
mục
của

.
In
mảng
ra
màn
hình
.
giá
trị

chỉ
mục
của

.
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



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ấ



hữ
y M

n
g
h

ai c
h
i

ut
h
ựcc
hấ
t

m

n
g
c

an
hữ
n
g
mảng mộtchiều. Ta có thể xem mảng hai
chiều

một
ma
trận
gồm
các
hàng


các
cột
chiều

một
ma
trận
gồm
các
hàng

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


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

×