Study Lập Trình

Học lập trình dành cho người mới bắt đầu!

ads

Bài 11. Viết chương trình xóa phần tử tại vị trí bất kỳ trong mảng

1. Bài toán

  Yêu cầu: Viết chương trình xóa phần tử tại vị trí bất kỳ trong mảng.
  • Input: Nhập mảng một chiều có các phần tử nguyên
  • Output:In ra màn hình mảng vừa xóa phần tử

2. Giải thuật:


Bước 1. Nhập thông tin:
  • Bước 1.1. Nhập \(N\);
  • Bước 1.2. Nhập dãy số đã cho \(A_{1}, A_{2}, ..., A_{n}\)
Bước 2. Xử lý:
  • Bước 2.1. Nhập vị trí k cần xóa
  • Bước 2.2. Gán n = n - 1;
  • Bước 2.3. Cho i chạy từ k đến n thì a[i] = a[i+1]
  • Bước 2.4. Cho i chạy từ 1 đến n thì in ra các a[i]
Bước 3. In ra màn hình mảng vừa xóa phần tử.

3. Code Pascal:

Program Xoa_phan_tu_mang;
Uses crt;
Var N, i, k: Integer;
        a: array[1..100] of integer;
Begin
        Clrscr;
        Write('Nhap phan tu cua mang: ');
        Readln(N);
        For i:=1 to N do
                Begin
                        Write('Phan tu thu ',i,' la: ');
                        Readln(a[i]);
                End;
        Writeln('Mang vua nhap la: ');
        For i:=1 to N do write(a[i]:3);
        Writeln;
        Write('Nhap vi tri can xoa phan tu: ');
        Readln(k);
        n:=n-1;
        For i:=k to n do a[i]:=a[i+1];
        For i:=1 to n do write(a[i]:3);
        Readln;
End.

4. Giải thích code

Dong code Ý nghĩa
Program Xoa_phan_tu_mang; Đặt tên chương trình Xoa_phan_tu_mang;
uses crt; Khai báo các hàm thư viện
Var a: array[1..100] of integer; Khai báo mảng một chiều
Var N, i, k: Integer Khai báo biến N(Số phần tử của dãy), i(biến chạy), k(vị trí cần xóa)
clrscr; Xóa màn hình khi chạy chương trình
write('Nhap so luong phan tu cua mang: '); In ra màn hình dòng chữ Nhap so luong phan tu cua day:
readln(N); Nhập từ bàn phím giá trị gán vào biến N
for i:=1 to N do
begin
  write('Phan tu thu ', i,': ');
  readln(a[i]);
end;
Cho i chạy từ 1 đến N làm công việc in các phần tử của dãy ra màn hình.
Writeln('* Mang vua nhap la: '); In ra màn hình dòng "Mang vua nhap la:"
For i:=1 to N do write(a[i]:3); In ra màn hình các phần tử vừa được nhập ở trên
Write('Nhap vi tri can xoa phan tu: '); Xuất ra màn hình câu "Nhap vi tri can xoa phan tu:"
Readln(k); Nhập từ bàn phím giá trị gán vào biến k
n:=n-1; Gán giá trị n - 1 vào biến n
For i:=k to n do a[i]:=a[i+1]; Cho i chạy từ k đến n sẽ gán a[i] = a[i + 1]. Tức là nếu k = 3 thì gán a[3] = a[4], mục đích của việc này là khi muốn xóa phần tử ở vị trí 3 thì phần tử a[3] bị mất phải dồn giá trị a[4] thành a[3] và tương tự cho các vị trí phía sau.
For i:=1 to n do write(a[i]:3); Cho i chạy từ 1 đến n (n lúc này là n -1 nhé) làm công việc in ra các giá trị a[i]. Lưu ý khi in đến vị trí k thì bắt đầu dồn a[i] = a[i+1].
Readln; Dừng màn hình cho các bạn xem kết quả.

5. Kết Quả Pascal

Kết luận:
    ▪ Bài này chúng ta sử dụng mảng 1 chiều để xử lý dãy số.
    ▪ Chúng ta nên chạy bằng tay từng bước phần vòng lặp xóa phần tử để hiểu rõ hơn.

Không có nhận xét nào:

Đăng nhận xét