Array Pascal là gì

DỮ LIỆU KIỂU
MẢNG (Một chiều)

A. LÝ THUYẾT

I. KHAI BÁO MẢNG


pháp:

            VAR               <Biến mảng> : ARRAY [chỉ
số] OF <Kiểu dữ liệu>;

Ví dụ:

            VAR               M:
Array[1..100] of Integer;

                                                C:
Array[A..Z] of byte;

Trong
đó chỉ số có kiểu vô hướng đếm được (như: nguyên, kí tự …)

II. QUẢN LÝ MỘT MẢNG:

– Để quản l‎y một dãy cần hai biến nguyên và một
biến mảng. Một biến kiểu nguyên để lưu số phần tử của dãy, một biến nguyên khác
để lưu chỉ số và một biến mảng để lưu giá trị các phần tử của dãy.

            – Để truy cập đến phần tử thứ k
trong mảng một chiều A, ta sử dụng cú pháp: A[k].

            – Có thể sử dụng các thủ tục
READ(LN)/WRITE(LN) đối với các phần tử của biến kiểu mảng.

 

B. BÀI TẬP

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.

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

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

#include<iostream>

using namespace std;

int main()

{

    int a[1000];

    int i,n;

    cout << “Nhap n: “;cin >> n;

   for (i = 1; i <= n; i++) 

     {

        cout << “Nhap vao phan tu a[” << i << “] : “;

        cin >> a[i];

     }

    cout << “Xuat mang: ” << endl;

    for (i = n; i>=1; i–)

        cout << a[i] << ” “;

    system(“pause”);

    return 0;

}

Xem thêm  Vì sao Năm 1972 Mĩ hòa hoãn với Trung Quốc và Liên Xô

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.

a. 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]

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

 

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

a. Hướng dẫn:

            Xoá phần tử k bằng cách ghi
đè phần tử thứ k+1 lên nó.

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

 

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

Xem thêm  Cách tạo tài khoản Twitter với Facebook

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

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

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

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

a. Hướng dẫn:

 

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

 

Xem thêm  Quan hệ nhiều có tốt cho nam không

Bài tập 5.7:

            Viết chương
trình in dãy n số fibonacy.

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

b.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]

                                    – In ra hàng thứ i.

Chương trình:

Program
Tam_giac_Pascal_mot_chieu;

Var n,i,j: integer;

    M: array[1..10] of integer;

Begin

    Write(‘Nhap n: ‘); Readln(n);

    For i:= 1 to n do M[i]:=0;

    M[1]:=1;

    For i:=1 to n do

    Begin

        For j:=i+ 1 downto 2 do
M[j]:=M[j]+M[j-1];

        For j:=1 to i+ 1 do Write(M[j]:3);

        Writeln;

    End;

    Readln

End.

Thuộc website Harveymomstudy.com

Trả lời

Email của bạn sẽ không được hiển thị công khai.