Tìm kiếm theo tiêu đề

Tin tức cộng đồng

5 điều đơn giản cha mẹ nên làm mỗi ngày để con hạnh phúc hơn

Tìm kiếm hạnh phúc là một nhu cầu lớn và xuất hiện xuyên suốt cuộc đời mỗi con người. Tác giả người Mỹ Stephanie Harrison đã dành ra hơn 10 năm để nghiên cứu về cảm nhận hạnh phúc, bà đã hệ thống các kiến thức ấy trong cuốn New Happy. Bà Harrison khẳng định có những thói quen đơn...
Xem tiếp

Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 0919 124 899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

Bài 11. Kiểu mảng

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Tham khảo cùng nội dung: Bài giảng, Giáo án, E-learning, Bài mẫu, Sách giáo khoa, ...
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Vũ Trường
Ngày gửi: 14h:01' 05-01-2022
Dung lượng: 1.7 MB
Số lượt tải: 350
Số lượt thích: 0 người
Hãy là chính mình
Be yourself
Wednesday, January 05, 2022
TIN HỌC 11 (C++)
BÀI 11
KIỂU MẢNG
NỘI DUNG BÀI HỌC
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
2
Khái niệm về mảng một chiều
Khai báo mảng một chiều
Cách tham chiếu phần tử trong mảng
Thao tác nhập giá trị cho phần tử của mảng
Thao tác xuất giá trị của phần tử mảng
Một số ví dụ
I. KHÁI NIỆM VỀ MẢNG MỘT CHIỀU
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
3
Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của nó.
Để người lập trình có thể xây dựng và sử dụng kiểu mảng một chiều, các NNLT có quy tắc cách thức cho phép xác định:
Tên kiểu mảng một chiều;
Số lượng phần tử;
Kiểu dữ liệu của phần tử;
Cách khai báo biến;
Cách tham chiếu đến phần tử.
Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu. Mảng được đặt tên và mỗi phần tử của nó có một chỉ số.
I. KHÁI NIỆM VỀ MẢNG MỘT CHIỀU
Ví dụ: Nhập vào nhiệt độ trung bình mỗi ngày trong tuần. Tính và đưa ra màn hình nhiệt độ trung bình của cả tuần và đếm số ngày có nhiệt độ lớn hơn nhiệt độ trung bình này.
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
4
I. KHÁI NIỆM VỀ MẢNG MỘT CHIỀU
#include
using namespace std;
#include
int main()
{
// Khai bao bien
float t1, t2, t3, t4, t5, t6, t7 ;
int Dem ;
float TB ;
// Nhap nhiet do cho 7 ngay
cout<<" Nhap nhiet do cua 7 ngay: ";
cin>> t1 >>t2 >>t3 >>t4 >>t5 >>t6 >>t7;
TB = ( t1+t2+t3+t4+t5+t6+t7) / 7;

Dem = 0 ;
if (t1 > TB) Dem++ ;
if (t2 > TB) Dem++ ;
if (t3 > TB) Dem++ ;
if (t4 > TB) Dem++ ;
if (t5 > TB) Dem++ ;
if (t6 > TB) Dem++ ;
if (t7 > TB) Dem++ ;
// Xuat ket qua
cout<<"\n Nhiet do trung binh tuan= ";
cout<cout<<"\nSo ngay nhiet do cao hon TB=";
cout<< setw(4) << Dem ;
return 0;
}
05/01/2022
5
Tin học 11 - Ngôn ngữ lập trình C++
Không dùng kiểu mảng
I. KHÁI NIỆM VỀ MẢNG MỘT CHIỀU
#include
using namespace std;
#include
const int Max = 366 ; // Max la 366
int main()
{ // Khai bao bien mang
float nhietdo[Max] ;
int dem, n ;
float Tong, TB ;
cout<<" Nhap so ngay: "; cin>> n ;
for(int i = 0 ; i < n ; i++ )
{
cout<<"Nhiet do ngay "<< i+1 <<": ";
cin>> nhietdo[i];
Tong += nhietdo[i] ;
}

dem = 0 ;
TB = Tong/n ;
for ( int i = 0 ; i < n ; i++ )
if( nhietdo[i] > TB )
dem++ ;

// Xuat ket qua
cout<<"\n Nhiet do TB "<< n <<" ngay: ";
cout<cout<<"\nSo ngay nhiet do cao hon trung binh: "<< dem ;

return 0;
}
05/01/2022
6
Tin học 11 - Ngôn ngữ lập trình C++
Sử dụng kiểu mảng
II. KHAI BÁO MẢNG MỘT CHIỀU
Cách 1: Khai báo trực tiếp biến mảng một chiều
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
7
Cú pháp:
[số_phần_tử] ;
Ví dụ:
int a[5], b[3] ;
char c[6] ;
II. KHAI BÁO MẢNG MỘT CHIỀU
Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
8
Cú pháp:
typedef [số_phần_tử] ;
;
Ví dụ:
typedef float ArrayReal[300];
ArrayReal Arr;
II. KHAI BÁO MẢNG MỘT CHIỀU
Cách 3: Khai báo biến mảng và khởi tạo giá trị ban đầu
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
9
Cú pháp:
[số_phần_tử] = { giá_trị_1, giá_trị_2, ..., giá_trị_n } ;
hoặc
[ ] = { giá_trị_1, giá_trị_2, ..., giá_trị_n } ;
trong đó:
Kiểu_dữ_liệu là các kiểu dữ liệu chuẩn hoặc kiểu dữ liệu có cấu trúc. Đây chính là kiểu dữ liệu được quy định cho các các phẩn tử trong mảng.
Số_phần_tử là số nguyên, là số lượng phần tử của mảng và được đánh số thứ tự bắt đầu từ 0 đến số phần tử - 1. (ví dụ: có 10 phần tử được đánh số từ 0 đến 9).
Giá_trị phải thuộc phạm vi của kiểu dữ liệu quy định.
II. KHAI BÁO MẢNG MỘT CHIỀU
Cách 3: Khai báo biến mảng và khởi tạo giá trị ban đầu
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
10
Cú pháp:
[số_phần_tử] = { giá_trị_1, giá_trị_2, ..., giá_trị_n } ;
hoặc
[ ] = { giá_trị_1, giá_trị_2, ..., giá_trị_n } ;
Ví dụ:
int b[7] = { 2, 3, 7 } ; // mảng b có 7 phần tử: b[0]=2, b[1]=3, b[2]=7
int a[ ] = { 2, 4, 6, 8, 10 } ;
// mảng a có 5 phần tử: a[0]=2, a[1]=4, a[2]=6, a[3]=8, a[4]=10
III. CÁCH THAM CHIẾU PHẦN TỬ
Tham chiếu tới phần tử của mảng một chiều được xác định bởi tên mảng cùng với chỉ số, được viết trong cặp ngoặc vuông [ và ]
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
11
Cú pháp: [];
Ví dụ: tham chiếu tới nhiệt độ của ngày thứ 20, trong chương trình trên, được viết là Nhietdo[19]
III. CÁCH THAM CHIẾU PHẦN TỬ
Ví dụ: tham chiếu tới nhiệt độ của ngày thứ 20
Nếu mảng bắt đầu là 0  Nhietdo[19]
Nếu mảng bắt đầu là 1  Nhietdo[20]
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
12
Mảng bắt đầu là: 1
Mảng bắt đầu là: 0
IV. THAO TÁC NHẬP GIÁ TRỊ CHO PHẦN TỬ CỦA MẢNG
Cú pháp:
[] = ;
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
13
trong đó:
là chỉ số phần tử trong mảng.
Nếu mảng có N phần tử, sẽ nằm trong khoảng từ 0 đến N–1.
IV. THAO TÁC NHẬP GIÁ TRỊ CHO PHẦN TỬ CỦA MẢNG
Lưu ý: Có thể tạo một mảng có các giá trị ngẫu nhiên bằng cách sử dụng hàm srand(time(NULL)); và hàm rand();
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
14
Để sử dụng được hàm srand(time(NULL)); và hàm rand(); cần khai báo thêm các thư viện sau đây:
#include // khai báo để sử dụng srand( ) và rand( )
#include // khai báo để sử dụng time( )
IV. THAO TÁC NHẬP GIÁ TRỊ CHO PHẦN TỬ CỦA MẢNG
#include
using namespace std;
#include // khai bao thu vien su dung srand() và rand()
#include // khai bao de su dung time()
int main()
{ // Khai báo mảng
int A[10] ; // Mảng A có tối đa 10 phần tử
// Khởi tạo số ngẫu nhiên
srand(time(NULL));
// Khởi tạo mảng A có 10 phần tử ngẫu nhiên
for (int i = 0; i < 10; i++)
A[i] = rand() ;
return 0;
}
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
15
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
05/01/2022
16
Tin học 11 - Ngôn ngữ lập trình C++
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
#include
using namespace std;
int main()
{ // Khai báo biến mảng
int DayA[100] ; //100 phần tử
int N ;
// Nhập số phần tử của mảng
cout<<"\n Nhap so phan tu mang, N: ";
cin >> N ;
// Nhập mảng có N phần tử
for( int i = 0 ; i < N ; i++ )
{
cout<<"\t Nhap phan tu"<< i+1 <<": ";
cin>> DayA[i] ;
}

// Xuất mảng có N phần tử
cout<<"\n Mang vua nhap vao la: \n";
for ( int i = 0 ; i < N ; i++ )
cout<<"\t" << DayA[i] ;

return 0;
}
05/01/2022
17
Tin học 11 - Ngôn ngữ lập trình C++
Nhập mảng có N phần tử
Xuất mảng có N phần tử
Ví dụ 1: Nhập xuất mảng một chiều có N phần tử.
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
18
Ví dụ 1: Nhập xuất mảng một chiều có N phần tử.
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
#include
using namespace std;
 
int main()
{
// Khai báo mảng ký tự tối đa 255
char Day1[255] ; // 255 ký tự
char Day2[255] ; // 255 ký tự
// TH1: Nhập mảng ký tự,
// không có khoảng trắng
cout<<"\n Nhap day ky tu 1: ";
cin>> Day1 ;
cout<<"\n Nhap day ky tu 2: ";
cin>> Day2 ;
cout<<"\n ===== Ket qua ===== ";
// Xuất mảng ký tự
// không có khoảng trắng
cout<<"\n Day ky tu 1: ";
cout<< Day1 ;
cout<<"\n Day ky tu 2: ";
cout<< Day2 ;

cout< return 0;
}
05/01/2022
19
Tin học 11 - Ngôn ngữ lập trình C++
Nhập xuất mảng ký tự (không có khoảng trắng)
Ví dụ 2: Nhập xuất mảng ký tự không có khoảng trắng (dấu cách).
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
20
Ví dụ 2: Nhập xuất mảng ký tự không có khoảng trắng (dấu cách).
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
#include
using namespace std;
 
int main()
{
// Khai báo mảng ký tự tối đa 255
char Day1[255] ; // 255 ký tự
char Day2[255] ; // 255 ký tự

// TH2: Nhập mảng ký tự bất kỳ
cout<<"\n Nhap day ky tu bat ky 1: ";
cin.getline(Day1, 255) ;
cout<<"\n Nhap day ky tu bat ky 2: ";
cin.getline(Day2, 255);
// cin.get(Day2, 255);

cout<<"\n ===== Ket qua ===== ";
// Xuất mảng ký tự vừa nhập
cout<<"\n Day ky tu 1 vua nhap: ";
cout<< Day1 ;
cout<<"\n Day ky tu 2 vua nhap: ";
cout<< Day2 ;

return 0;
}
05/01/2022
21
Tin học 11 - Ngôn ngữ lập trình C++
Nhập xuất mảng ký tự
bất kỳ (có khoảng trắng)
Ví dụ 3: Nhập xuất mảng ký tự bất kỳ (có khoảng trắng).
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
22
Ví dụ 3: Nhập xuất mảng ký tự bất kỳ (có khoảng trắng).
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
#include
using namespace std;
int main()
{ // Khai báo mảng 255 ký tự
char Day1[255] ;
char Day2[255] ;
cout<<"\n Nhap day ky tu (khong khoang trang): ";
cin>> Day1 ;
//fflush(stdin); // xóa bộ nhớ đệm
cin.ignore();
//xóa ký tự đầu tiên trong bộ nhớ đệm
cout<<"\n Nhap day ky tu bat ky: ";
cin.getline(Day2, 255) ;
//cin.get(Day2, 255) ;
cout<<"\n ===== Ket qua ===== ";
// Xuất mảng ký tự
cout<<"\n Day ky tu (khong khoang trang): ";
cout<< Day1 ;
cout<<"\n Day ky tu bat ky: ";
cout<< Day2 ;
return 0;
}
05/01/2022
23
Tin học 11 - Ngôn ngữ lập trình C++
Ví dụ 4: Nhập xuất 2 dãy ký tự, dãy không có khoảng trắng nhập trước.
Nhập xuất 2 dãy ký tự
Dãy không khoảng trắng nhập trước
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
24
Ví dụ 4: Nhập xuất 2 dãy ký tự, dãy không có khoảng trắng nhập trước.
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
#include
using namespace std;
int main()
{ // Khai báo mảng ký tự
char HoTen[255] ;
int NamSinh ;
// Nhập năm sinh
cout<<"\n Nhap nam sinh cua ban: ";
cin>> NamSinh;
//cin.ignore() ;
fflush(stdin); // xóa bộ nhớ đệm
// Nhập họ tên
cout<<"\n Hay nhap ho ten: ";
cin.get(HoTen, 255);
//cin.getline(HoTen, 255) ;
// cin.ignore() xóa ký tự đầu tiên trong bộ nhớ đệm. Tự xóa phím Enter khi kết thúc nhập lệnh ở trên
cout<<"\n ===== Ket qua ===== ";
// Xuất họ tên và năm sinh
cout<<"\n Ho ten cua ban la: ";
cout<< HoTen ;
cout<<"\n Ban sinh nam: ";
cout<< NamSinh ;
cout< return 0;
}
05/01/2022
25
Tin học 11 - Ngôn ngữ lập trình C++
Ví dụ 5: Nhập xuất NĂM SINH và HỌ TÊN. Nhập NĂM SINH trước.
Nhập xuất 2 dãy ký tự
Dãy không khoảng trắng nhập trước
V. THAO TÁC XUẤT GIÁ TRỊ CỦA PHẦN TỬ MẢNG
05/01/2022
26
Tin học 11 - Ngôn ngữ lập trình C++
Ví dụ 5: Nhập xuất NĂM SINH và HỌ TÊN. Nhập NĂM SINH trước.
VI. Một số ví dụ
Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên.
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
27
Input: Số nguyên dương N (N ≤ 250) và dãy N số nguyên dương A1, A2, …, AN. Mỗi số đều không vượt quá 500.
Output: Chỉ số và giá trị của phần tử lớn nhất trong dãy số đã cho (nếu có nhiều phần tử lớn nhất chỉ cần đưa ra một trong số chúng).
VI. Một số ví dụ
Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên.
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
28
Ý tưởng thuật toán:
Bước 1: Nhập N và dãy A1, A2, …, AN ;
Bước 2: Max  Ai, i  2 ;
Bước 3: Nếu i > N thì đưa ra giá trị Max rồi kết thúc;
Bước 4:
Bước 4.1: Nếu Max < Ai thì Max  Ai ;
Bước 4.2: i  i + 1 rồi quay lại bước 3 ;
VI. Một số ví dụ
#include
using namespace std;
const int Max = 250 ;
int main()
{ // Khai bao day so A, bien
int A[Max];
int N, TimMax;
cout<<" Nhap so phan tu: "; cin>> N ;
// Nhap gia tri cho cac phan tu day A
for ( int i = 0 ; i < N ; i++ )
{
cout<<" Nhap phan tu "<< i+1 <<": ";
cin>> A[i] ;
}
// Xuat day so A vua nhap
cout<<"\n Day so vua nhap: ";
for ( int i = 0 ; i < N ; i++ )
cout<< A[i] << " " ;
 
// Tim so lon nhat trong day so A
TimMax = A[0];
for (int i = 1 ; i < N ; i++ )
if ( TimMax < A[i] )
TimMax = A[i] ;
cout<<"\n So lon nhat la: " << TimMax;
 
return 0;
}
05/01/2022
29
Tin học 11 - Ngôn ngữ lập trình C++
Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên.
VI. Một số ví dụ
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
30
Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên.
VI. Một số ví dụ
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
31
Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
Input: Số nguyên dương N (N ≤ 250) và dãy A gồm N số nguyên dương A1, A2, …, AN. Mỗi số đều không vượt quá 500.
Output: Dãy số A đã được sắp xếp thành dãy không giảm.
Ý tưởng: Xem lại thuật toán tráo đổi trong SGK lớp 10.
VI. Một số ví dụ
#include
using namespace std;
const int Max = 250 ;
int main()
{ // Khai bao day so A
typedef int KieuMang1c[Max];
KieuMang1c A ;
// Khai bao bien
int N, Tam ;
// Nhap so phan tu cua day so A
cout<<" Nhap so phan tu day: ";
cin>> N ;
// Nhap gia tri cho cac phan tu
for ( int i = 0 ; i < N ; i++ )
{
cout<<"Nhap phan tu "<< i+1<<": ";
cin>> A[i] ;
}

// Xuat day so A vua nhap
cout<<"\n Day so vua nhap: \n";
for ( int i = 0 ; i < N ; i++ )
cout<< " \t " << A[i] ;
05/01/2022
32
Tin học 11 - Ngôn ngữ lập trình C++
Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
VI. Một số ví dụ
 
// Sap xep day so A
for(int j = N-1 ; j > 0 ; j-- )
for ( int i = 0 ; i < j ; i++ )
if( A[i] > A[i+1] )
{
// hoan đoi A[i] voi A[i+1]
Tam = A[i] ;
A[i] = A[i+1] ;
A[i+1] = Tam ;
}

// Day so sau khi sap xep
cout<<"\n Day sau khi sap: \n";
for ( int i = 0 ; i < N ; i++ )
cout<< " \t " << A[i] ;
 
return 0;
}
05/01/2022
33
Tin học 11 - Ngôn ngữ lập trình C++
Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
VI. Một số ví dụ
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
34
Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
VI. Một số ví dụ
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
35
Bài tập mẫu:
Cho dãy số A gồm có 10 số bất kỳ và viết chương trình (hoàn chỉnh) thực hiện các yêu cầu sau:
Khai báo mảng 1 chiều kích thước 10 phần tử.
Nhập các giá trị vào dãy số A.
Xuất dãy số A vừa nhập ra màn hình
Tính tổng và tích dãy số A.
VI. Một số ví dụ
#include
using namespace std;
int main()
{ // A.Khai báo mảng có 10 phần tử
int A[10];
double Tong, Tich ;
// B.Nhap cac gia tri vao day A
for (int i = 0; i < 10; i++)
{
cout<<"Nhap phan tu"< cin>> A[i] ;
}
05/01/2022
36
Tin học 11 - Ngôn ngữ lập trình C++

// C. Xuat mang A
cout<<"\n Mang ket qua: \n";
for ( int i = 0 ; i < 10 ; i++ )
cout<< A[i] << " , " ;

// D. Tong day so A
Bài tập mẫu:
VI. Một số ví dụ

// D. Tổng dãy số A
cout<<"\n Tong day so A: ";
Tong = 0 ; // gia tri ban dau
for (int i = 0 ; i<10 ; i++ )
Tong = Tong + A[i] ;
cout<<" Tong= " << Tong ;
05/01/2022
37
Tin học 11 - Ngôn ngữ lập trình C++

// D. Tích dãy số A
cout<<"\n Tich day so A: ";
Tich = 1 ; // gia tri ban dau
for (int i = 0 ; i<10 ; i++ )
Tich = Tich * A[i] ;
cout<<" Tich= " << Tich ;
 
return 0;
}
Bài tập mẫu:
VI. Một số ví dụ
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
38
Bài tập mẫu:
Thank You !
Hãy là chính mình
Be yourself
Wednesday, January 05, 2022
Cám ơn
quý thầy/cô đã tham dự
Thân ái
chào các em
Tiết học đã kết thúc
05/01/2022
Tin học 11 - Ngôn ngữ lập trình C++
40
 
Gửi ý kiến