10/14/2010
1
3Mng array
Ni dung
Mng mtchiu
Mts d
Khitomng
Mng t
Mng nhiuchiu
3.Mng array
Bài toán:ĐimmônTHDCca các thành viên trong lpđược
nhpvàotbàn phím.Hãy spxếpvàđưaracácđimtheo
thttăng dn.
printf ("Nhap diemthu 1\n");
scanf ("%f",&diem1);
printf ("Nhap diemthu 2\n");
scanf ("%f",&diem2);
...
3.Mng array
Mng :mttphphuhncácphntửcùngkiudữ
liuđượclưutrữkếtiếpnhautrongbộnh.
Khaibáo mng:
kiu_d_liutên_biến_mng[s_phn_t];
VD.
int A[10];
floatbang_diem[50];
charbang_ky_tu[26];
10/14/2010
2
3.Mng array
Truy cpvàomtphnttrong mng :
bang_diem[5]:phnt chs5trong mng bang_diem
tên_biến_mng[ch_s]
Chú ý:
Phntửđutiêntrongmng chs 0.
bang_diem[5]s phntth6trong mng.
Phntcui cùng trong mng chs
s_phn_tử‐1
3.Mng array
Thao tác vicácphnttrong mng nhưviscác biến thông
thường khác.
bang_diem[3]=7;
printf("Nhap vao diemthu 5:");
scanf("%f",&bang_diem[4]);
bang_diem[5]=bang_diem[3]+1;
printf("Diemthanh vien thu 7:%.2f",
bang_diem[6]);
3.Mng array
Các phnttrong mng
đượclưutrliên tctrong
bnh
int values[10];
value[0]
value[1]
value[2]
value[3]
value[4]
value[5]
value[6]
value[7]
value[8]
value[9]
3.Mng array
int values[10];
values[0] = 197;
values[2] = -100;
values[5] = 350;
values[3] =
values[0] +
values[5];
values[9] =
values[5] / 10;
--values[2];
197value[0]
value[1]
100value[2]
547
value[3]
value[4]
350
value[5]
value[6]
value[7]
value[8]
35
value[9]
101
10/14/2010
3
#include <stdio.h>
int main (void)
{
int values[10];
int index;
values[0] = 197;
values[2] = -100;
values[5] = 350;
values[3] = values[0] + values[5];
values[9] = values[5] / 10;
--values[2];
for ( index = 0; index < 10; ++index )
printf ("values[%i] = %i\n", index,
values[index]);
return 0;
}
3.Mng array
Sdng mng nhưbộđếm:
VD.Để khosátchtlượng mtloisnphmmi nhà sn
xutđưaratiêuchíđánh giá chtlượng snphmtheogiátr
t0đến5(0 không biết,1 rtti,2 ti,3 trung bình,
4 ttvà 5 rttt).
Các tiêu chí này được khách hàng đánh giá thông quamtcuc
khosáttimtsiêuth,khong 5000ngườiđãđượcphng
vn.
Bây gita munthng kếtqucacuckhosát.
#include <stdio.h>
int main (void)
{
int ratingCounters[6], i, response;
for ( i = 0; i <= 5; ++i ) ratingCounters[i] = 0;
printf ("Tra loi cua ban\n");
for ( i = 1; i <= 20; ++i ) {
scanf ("%i", &response);
if ( response < 0 || response > 5 )
printf ("Tra loi sai: %i\n", response);
else
++ratingCounters[response];
}
printf ("\n\nLoai So luong\n");
printf ("------ -------------------\n");
for ( i = 0; i <= 5; ++i )
printf ("%4i%14i\n", i, ratingCounters[i]);
return 0;
}
3.Mng array
Spxếpmng:spxếpcácphntcamng theo thttăng
dn(hocgimdn).
Các thuttoánspxếp:spxếp chèn,lachn,nibt,
shellsort,quicksort,mergesort,heapsort,….
3527851
Dãy banđầu
1235578
Dãy cui cùng
10/14/2010
4
Thuttoánspxếplachn
3527851
3527851 3527158
3527158 3525178
3525178
1235578
Dãy cui cùng
Dãy banđầu
Bước1
Bước2
Bước…
Thuttoánspxếplachn
Thuttoánspxếpla chn:
Nếumng banđầucót2phnttrlên (n>=2)
Gán giá trk:k=n
Lp:cho đếnkhik=1thì dng
–Tìmphnt giá trlnnhttrongkphntban
đầu.
Đổichphntlnnhtviphntthk
Gimk:k=k1
Thuttoánspxếplachn
#include<stdio.h>
int main(void)
{
int A[10]={1,4,2,8,12,4,28,4,23,10};
int i,k=10,tmp;
int viTriMax;
//inra gia trimang bandau
for(i=0;i<10;i++)
printf("%d",A[i]);
printf("\n");
while(k>1)
{
//tim gia trilon nhat trong kphan tu
viTriMax=0;
for(i=1;i<k;i++)
if(A[i]>A[viTriMax])viTriMax=i;
//doi cho voi phan tu thu k
tmp=A[viTriMax];
A[viTriMax]=A[k1];
A[k1]=tmp;
//giam k
k=k1;
}
for(i=0;i<10;i++)printf("%d",A[i]);
printf("\n");
return0;
}
10/14/2010
5
Tìmkiếmtrênmng
Bàitoán:Tìmkiếmtrênmng
Đầuvào:Chomtmnggmnphnt,mtgiátrịkhóa
knàođó.
Đầura:Trảlicâuhikxuthintrongmng
thểđầurasẽvịtríkhóaktrongmnghocsốlnxuthin
caktrongmng.
3527851
Mngbanđầu
Khóak5
Câutrảli:kxuthintrongmng
Tìmkiếmtrênmng
Thuttoántìmkiếmtunt:sosánhlnlượttngphntửtrên
mng.
Nếumng>0phnt
Gángiátrịbiếnfound=0(đểxácđịnhxemđãtìmthy
haychưa)
Lp:trongkhifound=0chưaxétđếnphntửcui
cùng
–Sosánhgiátrịphntửhintivik.
»Nếuđúngbngthìgánbiếnfound=1.
»Ngượclithìchuynsangphntửkếtiếp.
Tìmkiếmtrênmng
Tìmkiếmqunt:
int found =0;
i=0;
while(i<n && !found)
{
if(A[i]==k) found = 1;
else i++;
}
3.Mng array
VD.Sinh dãy sFibonacci