M ngảM ngả
ươ
Ch
ng 7
ụ ụ
ọ ủ M c tiêu c a bài h c ọ ủ M c tiêu c a bài h c
ả ỉ ố c a m ng và các ch s
ả ả
ự ỗ
ể ể
Elementary Programming with C/Session 7/ Slide 2 of 21
ả ầ ử ủ Các ph n t Khai báo m ngả ả Cách qu n lý m ng trong C ở ạ Cách kh i t o m ng ả Tìm hi u chu i / m ng ký t ề ả Tìm hi u m ng hai chi u ề ở ạ Cách kh i t o m ng hai chi u
ầ ử ầ ử
ỉ ố ủ ỉ ố ủ
và ch s c a và ch s c a
Các ph n t Các ph n t m ngảm ngả
ỗ
ằ
M i ph n t
c xác đ nh b ng m t s th t
ộ ố ứ ự
ả
ủ
S chi u c a m ng đ
ố ấ ừ
ế
ị ầ ử ượ đ ấ ỉ ố (còn g i là ch s ) duy nh t trong m ng ằ ị ượ ả c xác đ nh b ng s các ể ị t đ đ nh danh duy nh t t ng
ộ ố
ươ
ặ
ọ ề ố ỉ ố ầ ch s c n thi ph n tầ ử ỉ ố
Ch s là m t s nguyên d
ng trong [ ] đ t ngay
sau tên m ngả ỉ ố ủ
ượ ắ ầ
c b t đ u là 0
ả Ch s c a m ng (trong C) đ ầ ử : ớ M ng ả
player v i 11 ph n t
player[0], player[1], player[2],…. player[10]
Elementary Programming with C/Session 7/ Slide 3 of 21
Khai báo m ngả Khai báo m ngả
ủ
ả
Các đ c tính riêng c a m ng
c n ầ
ặ ượ ị c đ nh nghĩa. đ ữ ớ ư L p l u tr ể ữ ệ ủ
ầ ử ị
ầ ử ầ
đ u tiên
ộ ằ
ố
ướ
ệ ả m t h ng s
Ki u d li u c a các ph n t Tên m ngả Kích th
ạ đ i di n cho v trí ph n t c m ng
Elementary Programming with C/Session 7/ Slide 4 of 21
ả ả
Khai báo m ng (tt.) Khai báo m ng (tt.)
ố
ư
ả ỉ
ế
ả
ượ ể
ở
ứ
ặ
ặ ấ ướ ủ
ả
ề ặ c c a m ng.
Khai báo m ng gi ng nh cách khai c báo bi n. Ch khác là tên m ng đ ộ theo sau b i m t ho c nhi u bi u ặ th c đ t trong c p d u ngo c vuông ị ể [], đ xác đ nh kích th int player[11];
Elementary Programming with C/Session 7/ Slide 5 of 21
Các qui t cắ Các qui t cắ
ầ ử ủ
ể
ả
Các ph n t
ữ c a m ng có cùng ki u d
ả
M i ph n t
c a m ng có th đ
ể ượ ử c s
ẻ
d ng nh m t bi n riêng l
li uệ ỗ ụ ể
ể
ế ủ Ki u d li u c a m ng có th là
int,
ầ ử ủ ư ộ ả ữ ệ char, float ho cặ double
Elementary Programming with C/Session 7/ Slide 6 of 21
ả ả
ả Qu n lý m ng trong C ả Qu n lý m ng trong C
ử
c
ố ượ “đ i x ” Trong ngôn ng C, m ng đ ế
ả ớ
ố
ữ không gi ng hoàn toàn v i bi n
ể
Hai m ng có cùng ki u và cùng kích th
c
ượ
ả cũng không đ
ươ ng đ ả
ươ ộ
ướ ng nhau ộ
c xem là t ế ự Không th gán tr c ti p m t m ng cho m t
ả
ị
Không th gán tr cho toàn b m ng, mà
ể m ng khác. ể ị
ả
ừ
ộ ầ ử ủ
ả ả
ph i gán tr cho t ng ph n t
c a m ng
Elementary Programming with C/Session 7/ Slide 7 of 21
ả ả
ả ả
Qu n lý m ng trong C (tt) Qu n lý m ng trong C (tt)
/*Input values are accepted from the user into the array ary[10]*/
#include
void main(){
int ary[10];
int i, total, high,n;
printf(“Nhap so ptu cua mang <10\n”); Scanf(“%d”,&n);
for(i=0; i
printf(“\n Enter value: %d : ”, i+1);
scanf(“%d”,&ary[i]);
}
Elementary Programming with C/Session 7/ Slide 8 of 21
ả
ả
ả
ả
Qu n lý m ng trong C (tt)
Qu n lý m ng trong C (tt)
/* Displays highest of the entered values */
high = ary[0];
for(i=1; i<10; i++){
if(ary[i] > high) high = ary[i];
}
printf(“\nHighest value entered was %d”, high);
/* prints average of values entered for ary[10] */
for(i=0,total=0; i<10; i++) total = total +
ary[i];
printf(“\nThe average of the elements of ary is
%d”,total/i);
}
Elementary Programming with C/Session 7/ Slide 9 of 21
ở ạ
ở ạ
ả
ả
Kh i t o m ng
Kh i t o m ng
ỗ
ầ ử ủ
ầ ượ
ộ
ả
c a m t m ng auto c n đ
ở ạ
c kh i t o
M i ph n t
riêng r .ẽ
ả
ượ
c gán giá
ụ
Trong ví d sau các ph n t
c a m ng đ
ặ for
ầ ử ủ
ử ụ
ị ằ
tr b ng cách s d ng vòng l p
#include
void main() {
char alpha[26];
int i, j;
for(i=65,j=0; i<91; i++,j++) {
alpha[j] = i;
printf(“The character now assigned is%c\n”,alpha[j]);
}
getchar();
}
Elementary Programming with C/Session 7/ Slide 10 of 21
ở ạ
ở ạ
ả
ả
Kh i t o m ng (tt)
Kh i t o m ng (tt)
ườ
Trong tr
ng h p m ng extern và
ở
c t
đ
đ ng kh i
ả
ầ ử ượ ự ộ
ị
ớ
ợ
static, các ph n t
ạ
t o v i giá tr 0
Elementary Programming with C/Session 7/ Slide 11 of 21
ỗ
ỗ
ả
Chu i/M ng ký t
ả
Chu i/M ng ký t
ự
ự
ể ượ ư ộ ỗ
ế ằ ể ị
c đ nh nghĩa nh là m t
ự ượ
, đ
c k t thúc b ng ký
ộ ế
trong chu i chi m m t byte và
Chu i có th đ
ả
m ng ki u ký t
ự
null
t
ự
ỗ
M i ký t
ự ố
ký t
Ví d :ụ
Elementary Programming with C/Session 7/ Slide 12 of 21
ủ ỗ ỗ
cu i cùng c a chu i là “\0” (null)
ỗ
ỗ
ự
ự
ả
Chu i/M ng ký t
ả
Chu i/M ng ký t
ụ
(ví d )
ụ
(ví d )
#include
void main(){
char ary[5];
int i;
printf(“\n Enter string : “);
scanf(“%s”,ary);
printf(“\n The string is %s \n\n”,ary);
for (i=0; i<5; i++)
printf(“\t%d”, ary[i]);
}
Elementary Programming with C/Session 7/ Slide 13 of 21
ỗ
ỗ
ự
ự
ả
Chu i/M ng ký t
ả
Chu i/M ng ký t
(tt)
(tt)
ng trình:
ươ
ạ
Ch y ch
Enter string:
ủ
ế ữ ệ
ươ N u d li u nh p là “appl”, output c a
ch ậ
ng trình là:
The string is appl
Elementary Programming with C/Session 7/ Slide 14 of 21
97 112 112 108 0
ỗ
ử
Các hàm x lý chu i
ỗ
ử
Các hàm x lý chu i
ấ
c tìm th y
ử
Các hàm x lý chu i đ
ư ệ
ỗ ượ
ẩ
trong th vi n chu n
Elementary Programming with C/Session 7/ Slide 15 of 21
ả
ả
ề
M ng hai chi u
ề
M ng hai chi u
ả ườ ấ ề ng
đ
ơ
M ng đa chi u đ n gi n nh t và th
ề
c dùng nh t là m ng hai chi u
ư ả ộ
ả
ể
M ng hai chi u có th xem nh là m t m ng
ả
ố ề
là m ng m t chi u
ả ấ
ề
ầ ử
ỗ
v i m i ph n t
ộ
V logic, m t m ng hai chi u trông gi ng
ị
l ch trình
ồ ộ
ề
ử xe l a, g m các dòng
ả
ượ
ả
ớ
ề
ư ộ ả
nh m t b ng
và các c tộ
Elementary Programming with C/Session 7/ Slide 16 of 21
ề
ả
Khai báo m ng hai chi u:
int temp[4][3];
ở ạ
ở ạ
ề
ề
ả
Kh i t o m ng đa chi u
ả
Kh i t o m ng đa chi u
int ary[3][4]
={1,2,3,4,5,6,7,8,9,10,11,12};
Elementary Programming with C/Session 7/ Slide 17 of 21
ả ủ ư ế K t qu c a phép gán trên nh sau:
ở ạ
ở ạ
ề
ề
ả
ả
Kh i t o m ng đa chi u (tt)
Kh i t o m ng đa chi u (tt)
int ary[3][4] ={{1,2,3},{4,5,6},
{7,8,3}};
ả ủ
ư
ế
K t qu c a phép gán trên nh sau:
Elementary Programming with C/Session 7/ Slide 18 of 21
ở ạ
ở ạ
ề
ề
ả
ả
Kh i t o m ng đa chi u (tt)
Kh i t o m ng đa chi u (tt)
ộ
ả
ỗ
ề ượ
c khai
M t m ng chu i hai chi u đ
báo theo cách sau:
char str_ary[25][80];
Elementary Programming with C/Session 7/ Slide 19 of 21
ộ
ố
ả
ậ
ề
ươ
/* Ch
#include
void main()
{
int arr[2][3];
int row, col;
ng trình nh p các s vào m t m ng hai chi u. */
for(row = 0; row < 2; row++)
{
for(col = 0; col < 3; col++)
{
printf(“\nThe Number at [%d][%d] is %d”,
row, col, arr[row][col]);
}
}
}
for(row = 0; row < 2; row++)
{
for(col = 0; col < 3; col++)
{
printf(“\nEnter a Number at [%d][%d]: ”, row, col);
scanf(“%d”, &arr[row][col]);
}
}
Elementary Programming with C/Session 7/ Slide 20 of 21
ả
ả
M ng hai chi u
M ng hai chi u
ề Ví dụ
ề
#include
#include
void main (){
int i, n = 0;
int item;
char x[10][12];
char temp[12];
clrscr();
printf(“Enter each string on a separate line\n\n”);
printf(“Type ‘END’ when over \n\n”);
/* read in the list of strings */
do {
printf(“String %d : ”, n+1);
scanf(“%s”, x[n]);
} while (strcmp(x[n++], “END”));
/*reorder the list of strings */
còn tiếp….
Elementary Programming with C/Session 7/ Slide 21 of 21
ụ
ả
ả
ề Ví d (tt.)
ề
M ng hai chi u
M ng hai chi u
n = n – 1;
for(item=0; item
for(i=item+1; i
if(strcmp (x[item], x[i]) > 0){
/*interchange two stings */
strcpy (temp, x[item]);
strcpy (x[item], x[i]);
strcpy (x[i], temp);
}
}}
/* Display the arranged list of strings */
printf(“Recorded list of strings : \n”);
for(i = 0; i < n ; ++i) {
printf("\nString %d is %s", i+1, x[i]);
}
}
Elementary Programming with C/Session 7/ Slide 22 of 21
printf(“\n Enter value: %d : ”, i+1); scanf(“%d”,&ary[i]);
}
Elementary Programming with C/Session 7/ Slide 8 of 21
ả ả
ả ả
Qu n lý m ng trong C (tt) Qu n lý m ng trong C (tt)
/* Displays highest of the entered values */ high = ary[0]; for(i=1; i<10; i++){
if(ary[i] > high) high = ary[i];
} printf(“\nHighest value entered was %d”, high);
/* prints average of values entered for ary[10] */ for(i=0,total=0; i<10; i++) total = total + ary[i]; printf(“\nThe average of the elements of ary is %d”,total/i); }
Elementary Programming with C/Session 7/ Slide 9 of 21
ở ạ ở ạ
ả ả
Kh i t o m ng Kh i t o m ng
ỗ
ầ ử ủ
ầ ượ
ộ
ả c a m t m ng auto c n đ
ở ạ c kh i t o
M i ph n t riêng r .ẽ
ả
ượ
c gán giá
ụ Trong ví d sau các ph n t
c a m ng đ ặ for
ầ ử ủ
ử ụ
ị ằ
tr b ng cách s d ng vòng l p
#include
void main() {
char alpha[26];
int i, j;
for(i=65,j=0; i<91; i++,j++) {
alpha[j] = i; printf(“The character now assigned is%c\n”,alpha[j]);
} getchar(); }
Elementary Programming with C/Session 7/ Slide 10 of 21
ở ạ ở ạ
ả ả
Kh i t o m ng (tt) Kh i t o m ng (tt)
ườ
Trong tr
ng h p m ng extern và
ở
c t
đ
đ ng kh i
ả ầ ử ượ ự ộ ị
ớ
ợ static, các ph n t ạ t o v i giá tr 0
Elementary Programming with C/Session 7/ Slide 11 of 21
ỗ ỗ
ả Chu i/M ng ký t ả Chu i/M ng ký t
ự ự
ể ượ ư ộ ỗ
ế ằ ể ị c đ nh nghĩa nh là m t ự ượ , đ c k t thúc b ng ký
ộ ế trong chu i chi m m t byte và
Chu i có th đ ả m ng ki u ký t ự null t ự ỗ M i ký t ự ố ký t Ví d :ụ
Elementary Programming with C/Session 7/ Slide 12 of 21
ủ ỗ ỗ cu i cùng c a chu i là “\0” (null)
ỗ ỗ
ự ự
ả Chu i/M ng ký t ả Chu i/M ng ký t
ụ (ví d ) ụ (ví d )
#include
void main(){
char ary[5];
int i;
printf(“\n Enter string : “);
scanf(“%s”,ary);
printf(“\n The string is %s \n\n”,ary);
for (i=0; i<5; i++)
printf(“\t%d”, ary[i]);
}
Elementary Programming with C/Session 7/ Slide 13 of 21
ỗ ỗ
ự ự
ả Chu i/M ng ký t ả Chu i/M ng ký t
(tt) (tt)
ng trình:
ươ ạ Ch y ch Enter string:
ủ
ế ữ ệ ươ N u d li u nh p là “appl”, output c a ch ậ ng trình là:
The string is appl
Elementary Programming with C/Session 7/ Slide 14 of 21
97 112 112 108 0
ỗ ử Các hàm x lý chu i ỗ ử Các hàm x lý chu i
ấ
c tìm th y
ử Các hàm x lý chu i đ ư ệ
ỗ ượ ẩ
trong th vi n chu n
Elementary Programming with C/Session 7/ Slide 15 of 21
ả ả
ề M ng hai chi u ề M ng hai chi u
ả ườ ấ ề ng
đ
ơ M ng đa chi u đ n gi n nh t và th ề c dùng nh t là m ng hai chi u ư ả ộ
ả ể M ng hai chi u có th xem nh là m t m ng ả
ố ề là m ng m t chi u ả ấ ề ầ ử ỗ v i m i ph n t ộ
V logic, m t m ng hai chi u trông gi ng ị l ch trình
ồ ộ ề ử xe l a, g m các dòng
ả ượ ả ớ ề ư ộ ả nh m t b ng và các c tộ
Elementary Programming with C/Session 7/ Slide 16 of 21
ề ả Khai báo m ng hai chi u: int temp[4][3];
ở ạ ở ạ
ề ề
ả Kh i t o m ng đa chi u ả Kh i t o m ng đa chi u
int ary[3][4]
={1,2,3,4,5,6,7,8,9,10,11,12};
Elementary Programming with C/Session 7/ Slide 17 of 21
ả ủ ư ế K t qu c a phép gán trên nh sau:
ở ạ ở ạ
ề ề
ả ả
Kh i t o m ng đa chi u (tt) Kh i t o m ng đa chi u (tt)
int ary[3][4] ={{1,2,3},{4,5,6},
{7,8,3}};
ả ủ
ư
ế
K t qu c a phép gán trên nh sau:
Elementary Programming with C/Session 7/ Slide 18 of 21
ở ạ ở ạ
ề ề
ả ả
Kh i t o m ng đa chi u (tt) Kh i t o m ng đa chi u (tt)
ộ
ả
ỗ
ề ượ
c khai
M t m ng chu i hai chi u đ báo theo cách sau:
char str_ary[25][80];
Elementary Programming with C/Session 7/ Slide 19 of 21
ộ
ố
ả
ậ
ề
ươ
/* Ch
#include
int arr[2][3]; int row, col;
ng trình nh p các s vào m t m ng hai chi u. */ for(row = 0; row < 2; row++) { for(col = 0; col < 3; col++) { printf(“\nThe Number at [%d][%d] is %d”, row, col, arr[row][col]); } } }
for(row = 0; row < 2; row++) { for(col = 0; col < 3; col++) { printf(“\nEnter a Number at [%d][%d]: ”, row, col); scanf(“%d”, &arr[row][col]); }
}
Elementary Programming with C/Session 7/ Slide 20 of 21
ả ả
M ng hai chi u M ng hai chi u
ề Ví dụ ề
#include
#include
void main (){
int i, n = 0; int item; char x[10][12]; char temp[12]; clrscr(); printf(“Enter each string on a separate line\n\n”); printf(“Type ‘END’ when over \n\n”); /* read in the list of strings */
do {
printf(“String %d : ”, n+1); scanf(“%s”, x[n]);
} while (strcmp(x[n++], “END”));
/*reorder the list of strings */ còn tiếp…. Elementary Programming with C/Session 7/ Slide 21 of 21
ụ
ả ả
ề Ví d (tt.) ề
M ng hai chi u
M ng hai chi u
n = n – 1;
for(item=0; item
for(i=item+1; i
if(strcmp (x[item], x[i]) > 0){
/*interchange two stings */
strcpy (temp, x[item]);
strcpy (x[item], x[i]);
strcpy (x[i], temp);
}
}}
/* Display the arranged list of strings */
printf(“Recorded list of strings : \n”);
for(i = 0; i < n ; ++i) {
printf("\nString %d is %s", i+1, x[i]);
}
}
Elementary Programming with C/Session 7/ Slide 22 of 21
for(i=item+1; i
if(strcmp (x[item], x[i]) > 0){
/*interchange two stings */
strcpy (temp, x[item]);
strcpy (x[item], x[i]);
strcpy (x[i], temp);
}
}}
/* Display the arranged list of strings */
printf(“Recorded list of strings : \n”);
for(i = 0; i < n ; ++i) {
printf("\nString %d is %s", i+1, x[i]);
}
}
Elementary Programming with C/Session 7/ Slide 22 of 21
if(strcmp (x[item], x[i]) > 0){
/*interchange two stings */ strcpy (temp, x[item]); strcpy (x[item], x[i]); strcpy (x[i], temp);
} }}
/* Display the arranged list of strings */ printf(“Recorded list of strings : \n”); for(i = 0; i < n ; ++i) {
printf("\nString %d is %s", i+1, x[i]);
} }
Elementary Programming with C/Session 7/ Slide 22 of 21