Dữ liệu kiểu mảng là một tập hợp hữu hạn các phần tử có thứ tự, mọi phần tử đều có chung một kiểu dữ liệu, gọi là kiểu của phần tử. Việc sắp xếp thứ tự được thực hiện bằng cách gán cho mỗi phần tử một chỉ số. Vậy hãy tham khảo bài tập mảng 1 chiều pascal cùng với onthihsg ngay bên dưới nhé. Show
Video hướng dẫn bài tập mảng 1 chiềuLý thuyết Dữ liệu kiểu mảng trong PascalMảng trong Pascal là tập hợp các phần tử cố định có cùng 1 kiểu. Mảng được sử dụng để lưu trữ tập hợp dữ liệu, nhưng sẽ hữu ích hơn nếu lưu trữ tập hợp các biến cùng loại. Thay vì khai báo từng biến một, chẳng hạn như number1, number2, … number100, bạn có thể khai báo biến mảng thành numbers và sử dụng số [1], số [2] và …, số [100] để biểu diễn từng biến. Mảng được truy cập bởi một chỉ mục. Mảng trong Pascal bao gồm các phần tử mảng nằm liền kề trong bộ nhớ. Địa chỉ thấp nhất tương ứng với phần tử đầu tiên và địa chỉ cao nhất tương ứng phần tử cuối. Lưu ý nếu muốn mảng kiểu C bắt đầu từ chỉ số 0, bạn chỉ cần nhập chỉ mục đầu tiên là 0, thay vì nhập là 1. Khai Báo Mảng Trong PascalĐể khai báo một mảng trong Pascal, lập trình viên có thể khai báo kiểu, sau đó tạo các biến của mảng đó hoặc khai báo trực tiếp biến mảng. Cấu trúc chung của khai báo mảng một chiều trong Pascal có dạng: type array-identifier = array[index-type] of element-type; Trong đó: – array-identifier: chỉ ta tên của kiểu mảng. – index-type: xác định subscript của mảng, nó có thể là kiểu dữ liệu tích vô hướng. – element-type: chỉ định các loại giá trị sẽ được lưu trữ. Ví dụ: Trong đó velocity là biến mảng của vector, có thể chứa đến 25 số thực. Nếu bắt đầu mảng từ chỉ mục 0, khai báo có dạng như dưới đây: Các Loại Mảng Subscript Trong PascalTrong Pascal một mảng subscript có thể là kiểu dữ liệu vô hướng của các kiểu interger (số nguyên), Boolean, enumerated (kiểu liệt kê) hoặc subrange (kiểu miền con), ngoại trừ real (kiểu thực). Các mảng subscript có thể có các giá trị âm. Ví dụ: Dưới đây là mảng subscript của kiểu character (kiểu ký tự): Subscript của kiểu enumerated (kiểu liệt kê): Khởi Tạo Mảng Trong PascalTrong Pascal, các mảng được khởi tạo thông qua gán hoặc bằng cách chỉ định một subscript cụ thể hoặc sử dụng vòng lặp for-do. Ví dụ: Truy Cập Các Phần Tử Mảng Trong PascalPhần tử trong mảng Pascal được truy cập bằng cách lập chỉ mục tên mảng. Điều này được thực hiện bằng cách đặt chỉ mục của phần tử bên trong dấu ngoặc vuông sau tên của mảng. Ví dụ: a: integer; a: = alphabet[‘A’]; Lệnh trên sẽ lấy phần tử đầu tiên từ mảng có tên là alphabet và gán giá trị cho biến a. Dưới đây là ví khác, sử dụng cả khai báo, gán và truy cập mảng: Khi đoạn mã trên được biên dịch và thực thi, nó sẽ trả về kết quả dưới đây: Chi Tiết Các Mảng Trong PascalDưới đây là tổng hợp các dạng bài tập về mảng 1 chiều trong pascal mới nhất có lời giải hãy tham khảo nhé các bạn. Bài tập 5.1 Viết chương trình cho phép nhập n số và in ra theo thứ tự ngược lại. Ví dụ nhập 3, 5, 7 thì in ra 7, 5, 3.Hướng dẫn:
Mã chương trình: Program mang_1; uses crt; var n, i: integer; M: array[1..100] of real; Begin write(‘Nhap so n: ‘);readln(n); for i:=1 to n do Begin write(‘M[‘,i,’]=’); readln(M[i]); end; for i:= n downto 1 do write(m[i],’ ,’); readln end. Bài tập 5.2 Viết chương trình nhập dãy n số và in ra tổng các số lẻ trong dãy số vừa nhập.Hướng dẫn: Thực hiện cộng dồn các số lẻ bằng lệnh: if M[i] mod 2 =1 then tong:=tong+M[i] Mã chương trình: Program Mang_Tong_Le; uses crt; var i,n:byte; M:array[1..100] of integer; tong:longint; begin write(‘Nhap so phan tu cua day: ‘);readln(n); for i:=1 to n do begin write(‘M[‘,i,’]’); readln(M[i]); end; tong:=0; for i:=1 to n do if M[i] mod 2 =1 then tong:=tong+M[i]; write(‘Tong cac so le trong day la: ‘,tong); readln end. Nhận xét: Với yêu cầu của bài toán thì không cần sử dụng biến mảng vẫn giải được. Hãy thử nhé. Bài tập 5.3 Viết chương trình nhập n số, xoá số thứ k trong n số vừa nhập.In ra n-1 số còn lại.n= 10 (Nhập 10 phần tử) Ví dụ: Nhập 2, 3, 4, 5, 6, 8, 7, 6, 5, 4. k= 8 (Xoá phần tử thứ 8). In ra: 2, 3, 4, 5, 6, 8, 7, 5, 4. Hướng dẫn: Xoá phần tử k bằng cách ghi đè phần tử thứ k+1 lên nó. Mã chương trình: Program Xoa_mang; uses crt; var m:array[1..100] of integer; n,i,k:byte; begin Write(‘So phan tu cua day: ‘);readln(n); for i:=1 to n do Begin write(‘M[‘,i,’]=’); readln(M[i]); end; write(‘Nhap phan tu can xoa: ‘);readln(k); for i:=k to n-1 do m[i]:=m[i+1]; for i:=1 to n-1 do write(m[i],’, ‘); readln end. ⇒ Nhận xét: Với yêu cầu của bài tập trên chỉ cần kiểm tra chỉ số khi in (VD nếu i = 8 thì không in). Tuy nhiên trong khi sử dụng mảng để lưu dữ liệu giải toán, nhiều khi ta có nhu cầu xóa bớt hoặc chèn thêm phần tử vào dãy. Bài tập 5.4 Viết chương trình cho phép nhập một dãy gồm n số nguyên. Nhập thêm một số và chèn thêm vào dãy sau phần tử k.Hướng dẫn: – Dời các phần tử từ vị trí k về sau một bước. – Nhập giá trị cần chèn vào vị trí k. Mã chương trình: Program Mang_chen; uses crt; var M: array[1..100] of integer; i,n,k:integer; begin clrscr; write(‘Nhap : ‘);readln(n); for i:=1 to n do begin write(‘M[‘,i,’]=’); readln(M[i]); end; write(‘Vi tri chen: ‘);readln(k); for i:=n+1 downto k+1 do M[i]:=M[i-1]; write(‘Nhap so can chen: ‘); readln(M[k]); for i:=1 to n+1 do write(M[i],’, ‘); readln end. Bài tập 5.5 Viết chương trình cho phép nhập n số và cho biết số nhỏ nhất trong các số vừa nhập là số thứ mấy.Hướng dẫn:
Mã chương trình: Program TIM_NHO_NHAT; uses crt; var n,i,nhonhat:integer; m: array[1..100] of real; min:real; begin write(‘Nhap n: ‘); readln(n); for i:=1 to n do begin write(‘M[‘,i,’]=’); readln(m[i]); end; min:=m[1]; nhonhat:=1; for i:=2 to n do if m[i] < min then begin min:=m[i]; nhonhat:=i; end; writeln(‘phan tu nho nhat la phan tu thu’,nhonhat); readln end. Bài tập 5.6 Viết chương trình cho phép nhập n số sắp xếp và in ra các số đã nhập theo thứ tự tăng dần.Mã chương trình: Program Sap_xep_mang; Var M: array[1..10] of integer; i,j,n: byte; tam: integer; Begin Write(‘Nhap so phan tu n:’);Readln(n); For i:=1 to n do Begin Write(‘M[‘,i,’]=’); Readln(M[i]); End; For i:=1 to n-1 do For j:=i+1 to n do if M[j] <=M[i] then Begin Tam:= M[i]; M[i]:=M[j]; M[j]:=tam; End; Write(‘Sau khi sap xep: ‘); For i:=1 to n do Write(M[i],’;’); Readln; End. Bài tập 5.7: Viết chương trình in dãy n số fibonacy.Hướng dẫn: – Sử dụng mảng M để chứa dãy n số fibonacy. Tạo lập hai phần tử đầu tiên là 1, 1. – Cho i chạy từ 3 đến n. M [i] = M[i-1]+M[i-2]. – In n phần tử đầu tiên của mảng. Mã chương trình: Program Fibonacy_mang; uses crt; var i,n: integer; m:array[1..100] of longint; begin write(‘Nhap so phan tu can in:’); readln(n); m[1]:=1; m[2]:=1; for i:=3 to n do m[i]:=m[i-1]+m[i-2]; for i:=1 to n do write(m[i],’ ,’); readln end. Bài tập 5.8 Viết chương trình in ra màn hình tam giác Pascal. Ví dụ, với n=4 sẽ in ra hình sau.1 1 1 2 1 1 3 3 1 1 4 6 4 1 … Hàng thứ n được xác định từ hàng n-1: – Phần tử đầu tiên và phần tử cuối cùng đều bằng 1. – Phần tử thứ 2 là tổng của phần tử thứ nhất và thứ 2 của hàng n-1 – Phần tử thứ k của hàng thứ n là tổng của phần tử thứ k-1 và k của hàng thứ n-1. Thuật toán: Bước 1: Khởi tạo một mảng một chiều n phần tử có giá trị 0. Bước 2: Khởi tạo giá trị cho hàng thứ nhất M[1,1] = 1. Bước 3: – Đối với hàng thứ i tính giá trị phần tử từ phần tử thứ i + 1 xuống phần tử thứ 2: M[j]:=M[j] + M[j-1] |