SlideShare a Scribd company logo
1 of 14
Bµi 11
Nhập vào nhiệt độ trung bình của mỗi ngày trong tuần.
Tính và đưa ra màn hình nhiệt độ trung bình của tuần và số
lượng ngày có nhiệt độ trung bình cao hơn nhiệt độ trung
bình trong tuần?
* D÷ liÖu nhËp vµo (INPUT): t1,t2,t3,t4,t5,t6,t7.
* D÷ cÇn tÝnh vµ in ra (OUTPUT): tb, dem.
Hãy xác định Input,
Output và viết
chương trình giải
bài toán trên ?
Bµi to¸n ®Æt vÊn ®Ò:
Program vd1;
Uses crt;
Var
t1,t2,t3,t4,t5,t6,t7,tb : real;
dem : integer;
BEGIN
Clrscr;
write(‘ Nhap vao nhiet do 7 ngay : ’);
readln(t1,t2,t3,t4,t5,t6,t7);
tb : = (t1+t2+t3+t4+t5+t6+t7)/7;
dem : = 0 ;
if (t1>tb) then dem := dem + 1;
if (t2>tb) then dem := dem + 1;
if (t3>tb) then dem := dem + 1;
if (t4>tb) then dem := dem + 1;
if (t5>tb) then dem := dem + 1;
if (t6>tb) then dem := dem + 1;
if (t7>tb) then dem : = dem + 1;
Writeln(‘ Nhiet do trung binh trong tuan = ‘,tb : 6 : 2);
Writeln(‘ so ngay co nhiet do cao hon nhiet do tb ‘, dem);
Readln;
END.
Quan sát chương trình,
hãy cho biết nếu muốn
tính nhiệt độ trung bình
của N ngày trong năm
(VD: N=365) thì sẽ gặp
khó khăn gì ?
Khai báo quá lớn
(t1,t2,t3,...,t365) và
chương trình quá
dài (với 365 lệnh
IF) !!!!!
 §Ókh¾c phôc khãkh¨ n
®ãtasö dôngkiÓud÷liÖu
m¶ngmét chiÒu.
Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu,
được đặt tên và mỗi phần tử có một chỉ số thứ tự.
17 20 18 25 19 12 19A
1 2 3 4 5 6 7
Trong®ã:
 Khi thamchiÕu ®Õn phÇn tö thø i ta viÕt A[i].
VÝ dô: A[5] = 19.
 Tªn m¶ng : A.
 Sè phÇn tö cña m¶ng: 7.
VÝ dô:
 KiÓu d÷ liÖu cña c¸c phÇn tö: KiÓu nguyªn.
19
a. Khái niệm
b. Khai b¸ o
* C¸ch 1: Khai b¸o gi¸n tiÕp
TYPE <tªn kiÓu m¶ng> = array[<chØ sè ®Çu>..<chØ sè cuèi>] of
<kiÓuphÇn tö>;Var <ds biÕn m¶ng> : <tªn kiÓu m¶ng>;
VÝ dô: TYPE nhietdo = array[1..366] of real;
Var A: nhietdo;
Trong đó :  Chỉ số đầu, chỉ số cuối thường là các hằng hoặc biểu thức nguyên;
 Chỉ số đầu ≤ chỉ số cuối;
 Giữa 2 chỉ số là dấu ..
* C¸ch 2: Khai b¸o trùc tiÕp
Var <Ds biÕn m¶ng> : array[<chØ sè ®Çu>..<chØ sè cuèi>] of
<kiÓuphÇn tö>;
Var A,B : array[1..100] of real;
VÝ dô: Var nhietdo : array[1..366] of real;
c. C¸c thao t¸c xö lÝ trong m¶ng mét chiÒu
A
n
1. NhËpsèphÇntö cñam¶ng(n). Write(‘ Nhap vao so ngay:’);
Readln(n);
2. NhËpvµo gi¸ trÞcñac¸c phÇntö
trongm¶ng(A[i]).
For i:=1 to n do
Begin
write(‘nhiet do ngay thu’ ,i, ’ : ’);
readln(A[i]);
end;
.......
CÁC BƯỚC ThÓ hiÖn b»ng pascal
NhËp m¶ng mét chiÒu
víi n = 7
19171921182017
VÝdô: NhËp nhiÖt ®é n
ngµy.
In m¶ng mét chiÒu
Writeln(‘ Mang vua nhap : ’);
For i:=1 to n do Write(A[i]:5);
Mang vua nhap:
- Th«ngb¸o
- Ingi¸ trÞcñac¸c phÇntö
17 20 18 21 19 17 19
KÕt qu¶ in ra mµn h×nh:
VÝdô: In m¶ng võa nhËp.
* Đếm các phần tử trong mảng thoả mãn điều kiện cho trước
dem :=0;
For i :=1 to n do
IF A[i]>TB then dem:=dem+1;
C¸c thao t¸c xö lÝ kh¸c
VÝdô: §ÕmsèngµycãnhiÖt ®écao
h¬nnhiÖt ®éTBcñatuÇn.
TB = 18.7
Dem=0
7654321i
19171921182017A[i]
0 1 1 2 3 3 4
20 21 19 19
+1 +1 +1+1
Programvd1;
Uses crt;
Var
A: Array[1..366] of integer;
i,n,dem: integer;
S,TB: real ;
BEGIN
Clrscr;
write(‘ Nhap vao so ngay : ’) ;
readln(n) ;
S := 0 ;
For i := 1 to n do
Begin
write(‘ Nhap nhiet do ngay thu ‘,i,’ : ‘) ;
readln(A[i]) ;
S:=S+A[i] ;
End;
TB:= S/n ; dem:= 0 ;
For i := 1 to n do
If A[i]>TB Then dem:= dem+1;
Writeln(‘ Nhiet do trung binh ’ ,n,’ ngay = ‘,TB: 6 : 2) ;
Writeln(‘ So ngay co nhiet do cao hon nhiet do TBla: ‘, dem) ;
Readln ;
END.
Khai b¸o m¶ng 1chiÒu
NhËpm¶ng1chiÒu
TÝnhtæng
§ÕmsèphÇntö tho¶
m·n®iÒukiÖn
Nhap vao so ngay : 7
Nhap nhiet do ngay thu 1 : 17
Nhap nhiet do ngay thu 2 : 20
Nhap nhiet do ngay thu 3 : 18
Nhap nhiet do ngay thu 4 : 21
Nhap nhiet do ngay thu 5 : 19
Nhap nhiet do ngay thu 6 : 17
Nhap nhiet do ngay thu 7 : 19
Nhiet do trung binh 7 ngay = 18.70
So ngay co nhiet do cao hon nhiet do TB la: 4
Chương trình chạy và cho kết quả như sau:
Thông thường, các thao tác xử lí trong mảng một chiều đều
dùng câu lệnh FOR...DO.
* Tính tổng các phần tử trong mảng thoả mãn điều kiện cho trước
VÝ dô: TÝnh tæng c¸c phÇn tö trong
m¶ngchiahÕt cho 3.
S :=0;
For i :=1 to n do
IF A[i] mod 3 = 0 then S:=S+A[i];
19121825162015
S = 45
H·y nhí!
 M¶ng mét chiÒu lµ mét d·y h÷u
h¹n c¸c phÇn tö cïng kiÓu.
 Khai b¸o: tªn m¶ng, chØ sè
®Çu, chØ sè cuèi, kiÓu phÇn tö.
 Tham chiÕu phÇn tö m¶ng:
Tªn biÕn m¶ng[chØ sè phÇn tö]
 NhiÒu thao t¸c xö lÝ m¶ng dïng
cÊu tróc lÆp FOR..TO.. DO.
15 20 19 25 18 12 16
Var A:ARRAY[1..100] OF integer;
A[5] = 18
Cho các bài toán sau: Xác định bài toán nên sử
dụng kiểu mảng một chiều.
Bài 1: Cho dãy số nguyên A gồm 100 phần tử.
Đếm số lượng số chẵn trong dãy.
Bài 2: Nhập số nguyên N và kiểm tra tính nguyên
tố của N
Bài 3: Cho số nguyên N (N<=200), nhập dãy số
nguyên A1..AN. Đưa ra màn hình giá trị lớn nhất của
dãy.
Bài 4: Nhập 2 số nguyên N1, N2 từ bàn phím. Đưa
ra màn hình ước chung lớn nhất của 3 số.

More Related Content

Similar to Bai 11 kieu mang

Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Hồ Lợi
 
Homework - C programming language
Homework - C programming languageHomework - C programming language
Homework - C programming languageLinh Lê
 
Bai giang 4 thuat toan
Bai giang 4   thuat toanBai giang 4   thuat toan
Bai giang 4 thuat toanladoga
 
Thuat toan tin hoc
Thuat toan tin hocThuat toan tin hoc
Thuat toan tin hocladoga
 
Huong danontapc
Huong danontapcHuong danontapc
Huong danontapcHồ Lợi
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocHồ Lợi
 
Tai lieu boi duong tin 8
Tai lieu boi duong tin 8Tai lieu boi duong tin 8
Tai lieu boi duong tin 8lethilien1993
 
Cac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuCac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuThanh Pham
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Thanh Giảng Lê
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhLong Kingnam
 

Similar to Bai 11 kieu mang (20)

Bai 11 kieu mang
Bai 11 kieu mangBai 11 kieu mang
Bai 11 kieu mang
 
Bai11
Bai11Bai11
Bai11
 
Ontap ltc
Ontap ltcOntap ltc
Ontap ltc
 
Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Bài tập CTDL và GT 4
Bài tập CTDL và GT 4
 
Bai tap mau pascal
Bai tap mau pascalBai tap mau pascal
Bai tap mau pascal
 
Homework - C programming language
Homework - C programming languageHomework - C programming language
Homework - C programming language
 
Tin học lớp 8
Tin học lớp 8Tin học lớp 8
Tin học lớp 8
 
Vl while
Vl whileVl while
Vl while
 
Chương Trình Con
Chương Trình Con Chương Trình Con
Chương Trình Con
 
Bai12 kieuxau
Bai12 kieuxauBai12 kieuxau
Bai12 kieuxau
 
Bai giang 4 thuat toan
Bai giang 4   thuat toanBai giang 4   thuat toan
Bai giang 4 thuat toan
 
Thuat toan tin hoc
Thuat toan tin hocThuat toan tin hoc
Thuat toan tin hoc
 
Huong danontapc
Huong danontapcHuong danontapc
Huong danontapc
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hoc
 
Tai lieu boi duong tin 8
Tai lieu boi duong tin 8Tai lieu boi duong tin 8
Tai lieu boi duong tin 8
 
Cac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuCac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieu
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Chuong trinh con
Chuong trinh conChuong trinh con
Chuong trinh con
 
344444
344444344444
344444
 

Bai 11 kieu mang

  • 2. Nhập vào nhiệt độ trung bình của mỗi ngày trong tuần. Tính và đưa ra màn hình nhiệt độ trung bình của tuần và số lượng ngày có nhiệt độ trung bình cao hơn nhiệt độ trung bình trong tuần? * D÷ liÖu nhËp vµo (INPUT): t1,t2,t3,t4,t5,t6,t7. * D÷ cÇn tÝnh vµ in ra (OUTPUT): tb, dem. Hãy xác định Input, Output và viết chương trình giải bài toán trên ? Bµi to¸n ®Æt vÊn ®Ò:
  • 3. Program vd1; Uses crt; Var t1,t2,t3,t4,t5,t6,t7,tb : real; dem : integer; BEGIN Clrscr; write(‘ Nhap vao nhiet do 7 ngay : ’); readln(t1,t2,t3,t4,t5,t6,t7); tb : = (t1+t2+t3+t4+t5+t6+t7)/7; dem : = 0 ; if (t1>tb) then dem := dem + 1; if (t2>tb) then dem := dem + 1; if (t3>tb) then dem := dem + 1; if (t4>tb) then dem := dem + 1; if (t5>tb) then dem := dem + 1; if (t6>tb) then dem := dem + 1; if (t7>tb) then dem : = dem + 1; Writeln(‘ Nhiet do trung binh trong tuan = ‘,tb : 6 : 2); Writeln(‘ so ngay co nhiet do cao hon nhiet do tb ‘, dem); Readln; END.
  • 4. Quan sát chương trình, hãy cho biết nếu muốn tính nhiệt độ trung bình của N ngày trong năm (VD: N=365) thì sẽ gặp khó khăn gì ? Khai báo quá lớn (t1,t2,t3,...,t365) và chương trình quá dài (với 365 lệnh IF) !!!!!  §Ókh¾c phôc khãkh¨ n ®ãtasö dôngkiÓud÷liÖu m¶ngmét chiÒu.
  • 5. Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu, được đặt tên và mỗi phần tử có một chỉ số thứ tự. 17 20 18 25 19 12 19A 1 2 3 4 5 6 7 Trong®ã:  Khi thamchiÕu ®Õn phÇn tö thø i ta viÕt A[i]. VÝ dô: A[5] = 19.  Tªn m¶ng : A.  Sè phÇn tö cña m¶ng: 7. VÝ dô:  KiÓu d÷ liÖu cña c¸c phÇn tö: KiÓu nguyªn. 19 a. Khái niệm
  • 6. b. Khai b¸ o * C¸ch 1: Khai b¸o gi¸n tiÕp TYPE <tªn kiÓu m¶ng> = array[<chØ sè ®Çu>..<chØ sè cuèi>] of <kiÓuphÇn tö>;Var <ds biÕn m¶ng> : <tªn kiÓu m¶ng>; VÝ dô: TYPE nhietdo = array[1..366] of real; Var A: nhietdo; Trong đó :  Chỉ số đầu, chỉ số cuối thường là các hằng hoặc biểu thức nguyên;  Chỉ số đầu ≤ chỉ số cuối;  Giữa 2 chỉ số là dấu .. * C¸ch 2: Khai b¸o trùc tiÕp Var <Ds biÕn m¶ng> : array[<chØ sè ®Çu>..<chØ sè cuèi>] of <kiÓuphÇn tö>; Var A,B : array[1..100] of real; VÝ dô: Var nhietdo : array[1..366] of real;
  • 7. c. C¸c thao t¸c xö lÝ trong m¶ng mét chiÒu A n 1. NhËpsèphÇntö cñam¶ng(n). Write(‘ Nhap vao so ngay:’); Readln(n); 2. NhËpvµo gi¸ trÞcñac¸c phÇntö trongm¶ng(A[i]). For i:=1 to n do Begin write(‘nhiet do ngay thu’ ,i, ’ : ’); readln(A[i]); end; ....... CÁC BƯỚC ThÓ hiÖn b»ng pascal NhËp m¶ng mét chiÒu víi n = 7 19171921182017 VÝdô: NhËp nhiÖt ®é n ngµy.
  • 8. In m¶ng mét chiÒu Writeln(‘ Mang vua nhap : ’); For i:=1 to n do Write(A[i]:5); Mang vua nhap: - Th«ngb¸o - Ingi¸ trÞcñac¸c phÇntö 17 20 18 21 19 17 19 KÕt qu¶ in ra mµn h×nh: VÝdô: In m¶ng võa nhËp.
  • 9. * Đếm các phần tử trong mảng thoả mãn điều kiện cho trước dem :=0; For i :=1 to n do IF A[i]>TB then dem:=dem+1; C¸c thao t¸c xö lÝ kh¸c VÝdô: §ÕmsèngµycãnhiÖt ®écao h¬nnhiÖt ®éTBcñatuÇn. TB = 18.7 Dem=0 7654321i 19171921182017A[i] 0 1 1 2 3 3 4 20 21 19 19 +1 +1 +1+1
  • 10. Programvd1; Uses crt; Var A: Array[1..366] of integer; i,n,dem: integer; S,TB: real ; BEGIN Clrscr; write(‘ Nhap vao so ngay : ’) ; readln(n) ; S := 0 ; For i := 1 to n do Begin write(‘ Nhap nhiet do ngay thu ‘,i,’ : ‘) ; readln(A[i]) ; S:=S+A[i] ; End; TB:= S/n ; dem:= 0 ; For i := 1 to n do If A[i]>TB Then dem:= dem+1; Writeln(‘ Nhiet do trung binh ’ ,n,’ ngay = ‘,TB: 6 : 2) ; Writeln(‘ So ngay co nhiet do cao hon nhiet do TBla: ‘, dem) ; Readln ; END. Khai b¸o m¶ng 1chiÒu NhËpm¶ng1chiÒu TÝnhtæng §ÕmsèphÇntö tho¶ m·n®iÒukiÖn
  • 11. Nhap vao so ngay : 7 Nhap nhiet do ngay thu 1 : 17 Nhap nhiet do ngay thu 2 : 20 Nhap nhiet do ngay thu 3 : 18 Nhap nhiet do ngay thu 4 : 21 Nhap nhiet do ngay thu 5 : 19 Nhap nhiet do ngay thu 6 : 17 Nhap nhiet do ngay thu 7 : 19 Nhiet do trung binh 7 ngay = 18.70 So ngay co nhiet do cao hon nhiet do TB la: 4 Chương trình chạy và cho kết quả như sau:
  • 12. Thông thường, các thao tác xử lí trong mảng một chiều đều dùng câu lệnh FOR...DO. * Tính tổng các phần tử trong mảng thoả mãn điều kiện cho trước VÝ dô: TÝnh tæng c¸c phÇn tö trong m¶ngchiahÕt cho 3. S :=0; For i :=1 to n do IF A[i] mod 3 = 0 then S:=S+A[i]; 19121825162015 S = 45
  • 13. H·y nhí!  M¶ng mét chiÒu lµ mét d·y h÷u h¹n c¸c phÇn tö cïng kiÓu.  Khai b¸o: tªn m¶ng, chØ sè ®Çu, chØ sè cuèi, kiÓu phÇn tö.  Tham chiÕu phÇn tö m¶ng: Tªn biÕn m¶ng[chØ sè phÇn tö]  NhiÒu thao t¸c xö lÝ m¶ng dïng cÊu tróc lÆp FOR..TO.. DO. 15 20 19 25 18 12 16 Var A:ARRAY[1..100] OF integer; A[5] = 18
  • 14. Cho các bài toán sau: Xác định bài toán nên sử dụng kiểu mảng một chiều. Bài 1: Cho dãy số nguyên A gồm 100 phần tử. Đếm số lượng số chẵn trong dãy. Bài 2: Nhập số nguyên N và kiểm tra tính nguyên tố của N Bài 3: Cho số nguyên N (N<=200), nhập dãy số nguyên A1..AN. Đưa ra màn hình giá trị lớn nhất của dãy. Bài 4: Nhập 2 số nguyên N1, N2 từ bàn phím. Đưa ra màn hình ước chung lớn nhất của 3 số.