Tin học Mảng 1 chiều trong pascal

02-07-2019.

Học sinh tiến bộ
HV CLB Lịch sử
Thành viên
4 Tháng năm 2018
1,485
1,656
236
Vĩnh Phúc
Trung học cơ sở Lập Thạch
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Bài 1: Xóa các phần tử trùng nhau trong mảng một chiều
Đọc vào mảng một chiều gồm 1 dãy số nguyên có n phần tử.
Hãy xóa các phần tử trùng nhau trong mảng và in kết quả ra màn hình.
Giúp mình nhé! Mình cảm ơn!
 

thach200712

Học sinh
Thành viên
9 Tháng chín 2019
26
15
21
Bắc Ninh
Trường Trung học Cơ sở Tương Giang
Đúng không nhỉ ?

Program Bo_so_trung;
Uses crt;
Const Max=100;
Var A: Array[1..Max] Of Integer;
i,j,k,n: Integer;
Begin
Writeln('XOA BO CAC SO TRUNG NHAU');
Writeln('-----------------------------------------------');
Writeln;
Write('-Nhap so phan tu mang: '); Readln(n);
For i:=1 To N Do
Begin
Write('-Phan tu A[',i,']= ');
Readln(a);
End;
i:=2;
While i <= N Do
Begin
j:=1;
While a[j]<> aDo
j:=j+1;
If j < i Then
Begin
For k:=i to n-1 Do
a[k]:=a[k+1];
n:=n-1;
End
Else
i:=i+1;
End;
Writeln;
Write('-Mang con lai: ');
For i:=1 to n Do Write(a: 8);
Writeln;
Writeln(' Bam phim de ket thuc ');
Readln
End.
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Bài 1: Xóa các phần tử trùng nhau trong mảng một chiều
Đọc vào mảng một chiều gồm 1 dãy số nguyên có n phần tử.
Hãy xóa các phần tử trùng nhau trong mảng và in kết quả ra màn hình.
Giúp mình nhé! Mình cảm ơn!
Mã:
Var
    a:array[1..100] of integer;
    i,n,j,k:integer;
Begin
    Readln(n);
    For i:=1 to n do readln(a[i]);
    For i:=1 to n-1 do
       For j:=i+1 to n do
          If a[i]=a[j] then
               begin
                    For k:=j to n-1 do a[k]:=a[k+1];
                    n:=n-1;
              end;
    Write('mang sau khi xoa:');
   For i:=1 to n do write(a[i],' ');
readln
End.
Đúng không nhỉ ?

Program Bo_so_trung;
Uses crt;
Const Max=100;
Var A: Array[1..Max] Of Integer;
i,j,k,n: Integer;
Begin
Writeln('XOA BO CAC SO TRUNG NHAU');
Writeln('-----------------------------------------------');
Writeln;
Write('-Nhap so phan tu mang: '); Readln(n);
For i:=1 To N Do
Begin
Write('-Phan tu A[',i,']= ');
Readln(a);
End;
i:=2;
While i <= N Do
Begin
j:=1;
While a[j]<> aDo
j:=j+1;
If j < i Then
Begin
For k:=i to n-1 Do
a[k]:=a[k+1];
n:=n-1;
End
Else
i:=i+1;
End;
Writeln;
Write('-Mang con lai: ');
For i:=1 to n Do Write(a: 8);
Writeln;
Writeln(' Bam phim de ket thuc ');
Readln
End.
Đây cũng là một code để xóa các phần tử giống nhau trong mảng, có điều đúng hơn là xóa các giá trị trùng nhau nhưng vẫn đảm bảo vị trí của mảng. Theo mình nghĩ thì vẫn đúng, nhưng thừa thôi :)
 
Last edited:
  • Like
Reactions: 02-07-2019.

nguyen tran thanh nha

Học sinh chăm học
Thành viên
10 Tháng sáu 2018
107
53
61
20
Bà Rịa - Vũng Tàu
thcs kim long
Bài 1: Xóa các phần tử trùng nhau trong mảng một chiều
Đọc vào mảng một chiều gồm 1 dãy số nguyên có n phần tử.
Hãy xóa các phần tử trùng nhau trong mảng và in kết quả ra màn hình.
Giúp mình nhé! Mình cảm ơn!
Mã:
var i,n,j:longint;
    a,b:array[1..100] of longint;
begin
      writeln('nhap n:');readln(n);
      for i:= 1 to n do
      begin
            writeln('nhap phan tu a[,',i,']');
            readln(a[i]);
            b[a[i]]:= b[a[i]]+1;
      end;
      i:=1;
      while i<=n do
      begin
            if b[a[i]]>1 then
            begin
                 for j:= i to n do a[j]:= a[j+1];
                 n:= n-1;
            end else i:= i+1;
      end;
      writeln('cac phan tu con lai la:');
      for i:= 1 to n do write(a[i],' ');
end.
vì bạn không nói còn chừa lại một số hay xóa hết nên mình chọn là xóa hết luôn nha và không có giới hạn phạm vi số nên cái này chỉ có phần dương thôi
 
  • Like
Reactions: 02-07-2019.

Kem Min

Học sinh chăm học
Thành viên
26 Tháng bảy 2016
91
177
144
22
Mã:
var i,n,j:longint;
    a,b:array[1..100] of longint;
begin
      writeln('nhap n:');readln(n);
      for i:= 1 to n do
      begin
            writeln('nhap phan tu a[,',i,']');
            readln(a[i]);
            b[a[i]]:= b[a[i]]+1;
      end;
      i:=1;
      while i<=n do
      begin
            if b[a[i]]>1 then
            begin
                 for j:= i to n do a[j]:= a[j+1];
                 n:= n-1;
            end else i:= i+1;
      end;
      writeln('cac phan tu con lai la:');
      for i:= 1 to n do write(a[i],' ');
end.
vì bạn không nói còn chừa lại một số hay xóa hết nên mình chọn là xóa hết luôn nha và không có giới hạn phạm vi số nên cái này chỉ có phần dương thôi
- đây là thuật toán lùa bò vào chuồng ;) -.- đúng không ta ?
 
Top Bottom