em có một bài pascal sau :
nhập vào một dãy số rồi in ra các số giông nhau
succe của nó như sau:
Code:
Uses crt;
Var
a, b: Array[1..50] Of Integer;
n, m, i, j, k: Byte;
trung: Boolean;
BEGIN
Clrscr;
Write(' Nhap do dai cua day so nguyen : '); Readln(n);
Writeln(' Nhap cac phan tu cua day : ');
For i:= 1 To N do
Begin
Write (' a[',i,'] = '); Readln(a[i]);
End;
i:= 1; m:= 0;
Repeat
trung:= false;
j:= i + 1;
Repeat
If (j <= n) and (a[i] = a[j]) Then trung:= true;
inc(j);
Until trung or (j > n);
If trung Then
Begin
m:= m + 1;
b[m]:= a[i]; writeln(b[m]:4);
End;
inc(i);
Until i > n;
If m > 1 Then
Begin
i:= 1;
Repeat
j:= i + 1;
Repeat
trung:= false;
If b[i] = b[j] Then trung:= true;
If trung Then
Begin
If j < m Then
For k:= j To m - 1 Do b[k]:= b[k + 1];
m:= m - 1;
dec(j);
End;
inc(j);
Until j > m;
inc(i);
Until i > m;
End;
If m > 0 Then
For k:= 1 To m Do Write(b[k]:4);
Readln;
END.
nhưng đoạn mà em nghì mãi không hiểu là đoạn:
Code:
If m > 1 Then
Begin
i:= 1;
Repeat
j:= i + 1;
Repeat
trung:= false;
If b[i] = b[j] Then trung:= true;
If trung Then
Begin
If j < m Then
For k:= j To m - 1 Do b[k]:= b[k + 1];
m:= m - 1;
dec(j);
End;
inc(j);
Until j > m;
inc(i);
Until i > m;
End;
em không hiểu nó có tác dụng gì trong ct trên em đã thử bỏ đoạn đó đi nhưng thấy nó vẫn ổn vấy mong mọi người giải thích hộ em với !
Bookmarks