Với mảng một chiều ta quan tâm đến: + Tên kiểu mảng một chiều. + Số lượng phần tử trong mảng. + Kiểu dữ liệu của phần tử. + Cách khai báo biến mảng. + Cách tham chiếu đến phần tử.
+ Khai báo trực tiếp: Var<tên biến mảng>: array[<kiểu chỉ số>]of <kiểu phần tử>; + Khai báo gián tiếp: Type <tênkiểumảng>=array[<kiểu chỉ số>] of <kiểu phần tử>; var <tên biến mảng>: <tên kiểu mảng>; Trong đó : + Kiểu chỉ số thường là đoạn số nguyên liên tục có dạng n1..n2, với n1 là chỉ số đầu và n2 là chỉ số cuối (n1≤n2). Nên đánh chỉ số từ 1; + Kiểu phần tử là kiểu dữ liệu của các phần tử mảng. + Tham chiếu đến phần tử mảng ta viết : <tên biến mảng>[chỉ số] Tham chiếu đến phần tử thứ 20 trong mảng A ta viết A[20]. 2. Các thao tác với kiểu mảng một chiều.
write(‘Nhap so phan tu cua mang: ’); readln(n); write(‘Nhap gia tri cho tung phan tu: ’); for i:=1 to n do begin write(‘Phan tu thu ’ , i , ‘ la: ’); {write(‘A[‘,I,’]=’);} readln(A[i]); end;
writeln(‘Mang vua nhap la: ’); for i:=1 to n do write(A[i]:4); 3. Ví dụ về mảng một chiều Bài 1: Nhập vào một dãy số nguyên, tìm số nhỏ nhất trong dãy? Ý tưởng: Min:=A[1]; Duyệt từ đầu dãy đến cuối dãy, so sánh các phần tử với Min, nếu A[i]<min thì min:=A[i]; Giải quyết bài toán: Var A:array[1..200] of integer; I, n: byte; min:integer; Begin write(‘Nhap so phan tu cua mang: ’); readln(n); write(‘Nhap gia tri cho tung phan tu: ’); for i:=1 to n do begin write(‘Phan tu thu ’ , i , ‘ la: ’); {write(‘A[‘,I,’]=’);} readln(A[i]); end; min:=A[1]; For i:=2 to n do if A[i]<min then min:=A[i]; write(‘So nho nhat trong mang :’,min); readln; END. Bài 1: Nhập vào một dãy số nguyên, sắp xếp dãy thành dãy không giảm (tăng dần) theo phương pháp nổi bọt (Bubble sort) Ý tưởng: Để sắp dãy có n phần tử, thực hiện qua n-1 lượt. Ở mỗi lượt, duyệt từ đầu dãy đến cuối dãy (cần xét ở lượt đó), cứ so sánh 2 phần tử kề nhau, nếu phần tử đứng trước lớn hơn phần tử đứng sau thì đổi chỗ chúng. If j> A[i] - 1 then demnt:=demnt+1; End; Writeln(‘ so luong phan tu la nguyen to la’, demnt); {----Cau h-------} d:=A[2]-A[1]; j:=3; While (j<=n) And (A[j]-A[j-1]=d) do j:=j+1; if j>n then Writeln(‘ mang vua nhap la cap so cong’) else Writeln(‘ mang vua nhap khong phai la cap so cong’); {------Cau i-------} For i:=1 to n do For j:=i+1 to n-1 do If A[j]>A[j+1] then Begin {doi vi tri hai phan tu A[j] va A[j+1]} tg:=A[j]; A[j]:=A[j+1]; A[j+1]:=tg; End; Writeln(‘mang sau khi duoc sap xep la’); For i:=1 to n do write(A[i]: 5); Readln END. |