Bài tập mảng 1 chiều pascal có lời giải năm 2024

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é.

Video hướng dẫn bài tập mảng 1 chiều

Lý thuyết Dữ liệu kiểu mảng trong Pascal

Mả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.

Bài tập mảng 1 chiều pascal có lời giải năm 2024

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ụ:

Bài tập mảng 1 chiều pascal có lời giải năm 2024

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:

Bài tập mảng 1 chiều pascal có lời giải năm 2024

Các Loại Mảng Subscript Trong Pascal

Trong 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ụ:

Bài tập mảng 1 chiều pascal có lời giải năm 2024

Dưới đây là mảng subscript của kiểu character (kiểu ký tự):

Bài tập mảng 1 chiều pascal có lời giải năm 2024

Subscript của kiểu enumerated (kiểu liệt kê):

Bài tập mảng 1 chiều pascal có lời giải năm 2024

Khởi Tạo Mảng Trong Pascal

Trong 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ụ:

Bài tập mảng 1 chiều pascal có lời giải năm 2024

Truy Cập Các Phần Tử Mảng Trong Pascal

Phầ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:

Bài tập mảng 1 chiều pascal có lời giải năm 2024

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:

Bài tập mảng 1 chiều pascal có lời giải năm 2024

Chi Tiết Các Mảng Trong Pascal

Bài tập mảng 1 chiều pascal có lời giải năm 2024

Dướ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:

  • Dùng biến n để lưu lượng số cần nhập.
  • Dùng mảng để lưu các số vừa nhập.
  • Cho i chạy từ n về 1 để in các số vừa nhập.

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:

  • Dùng biến n để lưu lượng số cần nhập.
  • Dùng mảng để lưu các số vừa nhập.
  • Cho Min = M[1], j = 1 (Xem phần tử đầu tiên là bé nhất)
  • So sánh Min với n-1 số còn lại. Trong quá trình so sánh nếu Min > M[i] thì gán Min = M[i], j=i và tiếp tục so sánh .

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]