MẢNG MỘT CHIỀU | Đại học Ngoại Ngữ - Tin Học Thành Phố Hồ Chí Minh
MẢNG MỘT CHIỀU | Đại học Ngoại Ngữ - Tin Học Thành Phố Hồ Chí Minh được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem
Preview text:
BUỔI 06 MẢNG MỘT CHIỀU Bài 1: N ậ h p mảng 1 chiều
Định nghĩa các hàm sau đây, mỗi hàm là 1 chương trình C#:
1. static void NhapMang1(int[] arr): •
Trong Hàm Main(): yêu cầu người dùng nhập kích thước n, khởi tạo mảng 1 chiều
chứa các số nguyên arr với kích thước n (Gợi ý: int[] arr = new int[n]; ) •
Trong Hàm NhapMang1(): có tham số là mảng 1 chiều chứa các số nguyên arr đã
được khởi tạo, yêu cầu người dùng nhập giá t ị
r cho các phần tử của mảng a.
static void NhapMang1(int[] arr) {
for (int i = 0; i <= arr.Length -1 ; i++) {
Console.Write($"arr[{i}] = ");
arr[i] = Convert.ToInt32(Console.ReadLine()); } }
static void Main(string[] args) { Console.Write("Nhap n: ");
int n = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[n]; NhapMang1(arr); }
2. static void NhapMang2(out int[] arr): •
Trong Hàm Main(): khai báo mảng 1 chiều chứa các số nguyên ar ,
r chưa biết trước
kích thước (Gợi ý: int[] ar ; r ) • Trong Hàm NhapMang2( :
) Hàm có tham số là mảng 1 chiều chứa các số nguyên arr không cần p ả h i k ở
h i tạo trước, yêu cầu người dùng nhập kích thước n, khởi tạo
mảng arr với kích thước vừa nhập n, sau đó n ậ
h p giá trị cho các phẩn tử của arr.
static void NhapMang2(out int[] arr) { Console.Write("Nhap n: ");
int n = Convert.ToInt32(Console.ReadLine()); arr = new [ int n];
for (int i = 0; i <= arr.Length - 1; i++) {
Console.Write($"arr[{i}] = ");
arr[i] = Convert.ToInt32(Console.ReadLine()); } }
static void Main(string[] args) { int[] arr; NhapMang2( out arr); } 3. static int[] NhapMang3(): •
Trong Hàm Main(): khai báo mảng 1 chiều chứa các số nguyên ar ,
r chưa biết trước
kích thước (Gợi ý: int[] ar ; r ) •
Trong Hàm NhapMang3(): yêu cầu người dùng nhập kích thước n, khởi tạo một mảng
1 chiều chứa các số nguyên arr với kích thước vừa nhập n, sau đó nhập giá trị cho
các phẩn tử của a. Hàm c
ó kết quả trả về là mảng arr sau khi đã nhập xong. static int[] NhapMang3() { Console.Write("Nhap n: ");
int n = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[n];
for (int i = 0; i <= arr.Length - 1; i++) {
Console.Write($"arr[{i}] = ");
arr[i] = Convert.ToInt32(Console.ReadLine()); } return arr; }
static void Main(string[] args) { int[] arr = NhapMang3(); }
Nhận xét sự khác nhau của 3 hàm trên. Bài 2: X ấ u t mảng 1 chiều
Định nghĩa hàm XuatMang có tham số là một mảng 1 chiều chứa các số nguyên arr với kích thước n. In
các phần tử của mảng arr ra màn hình, mỗi phần tử cách nhau bởi một ký tự khoảng trắng, sau khi in
xong phần tử cuối cùng thì xuống hàng. Input
• Dòng đầu tiên chứa số nguyên n
• Dòng thứ hai chứa 𝑛 số nguyên Output • Dòng duy nhất c ứ
h a các số nguyên trong mảng
Gợi ý: dùng 4 dòng code để nhập n và mảng arr. Console.Write("Nhap n: ");
int n = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[n];
arr = Array.ConvertAll(Console.ReadLine().Trim().Split(' ), Conve ' rt.ToInt32); Bài 3: Tổng mảng
Định nghĩa hàm TinhTong tìm và trả về tổng giá trị các phần tử của một mảng số nguyên. Input
• Dòng đầu tiên chứa số nguyên n
• Dòng thứ hai chứa 𝑛 số nguyên Output • Dòng duy nhất c ứ
h a giá trị tổng của các số nguyên trong mảng Bài 4: Tìm kiếm x
Định nghĩa hàm TimX tìm và trả về vị trí của phần tử có giá trị bằng x trong mảng số nguyên. •
Nếu có nhiều phần tử có giá trị bằng x thì trả về vị trí đầu tiên tính từ đầu mảng; •
Nếu không có phần tử nào có giá trị bằng x thì trả về -1. Input
• Dòng đầu tiên chứa số nguyên n
• Dòng thứ hai chứa 𝑛 số nguyên
• Dòng thứ ba chứa số nguyên x Output • Dòng duy nhất c ứ
h a giá trị tổng của các số nguyên trong mảng Bài 5: Tìm kiếm max
Định nghĩa hàm TimMax tìm và trả về vị trí phần tử có giá trị lớn nhất trong một mảng một chiều chứa
các số thực. Nếu có nhiều phần tử có giá trị bằng giá trị lớn nhất thì trả về vị trí cuối cùng trong mảng. Input
• Dòng đầu tiên chứa số nguyên n
• Dòng thứ hai chứa 𝑛 số nguyên Output • Dòng duy nhất c ứ
h a giá trị tổng của các số nguyên trong mảng
Bài 6: Đếm số nguyên dương
Định nghĩa hàm Dem đếm và trả về số lượng phần tử có giá trị lớn hơn 0 trong một mảng một chiều chứa các số nguyên. Input
• Dòng đầu tiên chứa số nguyên n
• Dòng thứ hai chứa 𝑛 số nguyên Output • Dòng duy nhất c ứ
h a giá trị tổng của các số nguyên trong mảng
Bài 7a: Bài toán Sắp xếp Interchange Sort (Sắp xếp trực tiếp).
Cho n số nguyên 𝑎 = (𝑎1, 𝑎2, … , 𝑎 )
𝑛 (𝟏 ≤ 𝒏 ≤ 𝟓𝟎𝟎𝟎). Hãy định nghĩa các hàm sắp xếp dãy a
tăng dần theo thuật toán Interchange Sort đã hướng dẫn trong lớp lý thuyết. Input
• Dòng đầu tiên chứa số nguyên n
• Dòng thứ hai chứa 𝑛 số nguyên Output
• Dòng duy nhất các số nguyên đã sắp xếp
Bài 7b: Bài toán Sắp xếp Bubble Sort (Sắp xếp n ổi bọt).
Cho n số nguyên 𝑎 = (𝑎1, 𝑎2, … , 𝑎 )
𝑛 (𝟏 ≤ 𝒏 ≤ 𝟓𝟎𝟎𝟎). Hãy định nghĩa các hàm sắp xếp dãy a
tăng dần theo thuật toán Bubble Sort. Thuật toán sắp xếp nổi bọt (Bubble Sort) là thuật toán thực hiện
việc so sánh các cặp phần tử liền kề nhau và tráo đổi vị t ị
r của nó cho đúng thứ tự mà chúng ta mong
muốn. Trong thuật toán này: •
Duyệt từ bên trái và so sánh các phần tử liền kề và hoán đổi vị trí của cặp đó nếu không đúng thứ tự. •
Bằng cách này, phần tử lớn nhất được di chuyển đến vị trí bên phải c ùng của mảng. •
Vòng lặp tiếp theo tìm ra số lớn thứ hai và đặt nó vào bên trái của phần tử lớn nhất (vị trí thứ hai từ bên phải qua). •
Quá trình này sau đó được tiếp tục cho đến khi dữ liệu của mảng đ ợc ư sắp xếp. Input
• Dòng đầu tiên chứa số nguyên n
• Dòng thứ hai chứa 𝑛 số nguyên Output
• Dòng duy nhất các số nguyên đã sắp xếp Bài 8:
Hiệu chỉnh thuật toán ở Bài 7a Interchange Sort (Sắp xếp trực tiếp) để thực hiện việc sắp xếp các phần
tử trong đoạn [𝒌, 𝒍] (0 ≤ 𝑘 ≤ 𝑙 < 𝑛) theo thứ tự tăng dần. Input
• Dòng đầu tiên chứa số nguyên n
• Dòng thứ hai chứa 𝑛 số nguyên
• Dòng thứ ba chứa số nguyên k
• Dòng thứ tư chứa số nguyên l Output
• Dòng duy nhất các số nguyên đã sắp xếp