4. การกาหนดแบบอาร์เรย์ 1 มิติ
กาหนดผ่าน TYPE
Type matrix = array[1..100] of integer;
VAR number:matrix;
หรือ กาหนดตรงผ่าน VAR
VAR number: array[1..100] of integer;
5. การกาหนดแบบอาร์เรย์ 1 มิติ
– ตัวอย่าง
TYPE matrix = array[1..100] of integer;
letter = array[‘A’..’Z’] of real;
VAR number : matrix; index: integer;
scale : letter;
chindex : ‘A’..’Z’;
8. การอ่านค่าเก็บไว้ในอาร์เรย์
(* program put asiic code of for i:= 'a' to 'z' do
character a-z into array A b[i] := a[i];
and copy to B*) for i:='z' downto 'a' do
begin writeln(a[i],' and ',b[i]);
for i:= 'a' to 'z' do end.
a[i] := ord(i); หมายเหตุ
ภาษาปาลคาลให้ใช้ b:= a ได้ถ้า
อาร์เรย์ทั้ง2เหมือนกัน
13. การค้นหาค่าสูงสุดต่าสุด
for i:=1 to n_array do writeln('---------------------------
begin --');
if num[i] > max then writeln('Max is = ',max,'
max := num[i]; Min is = ',min);
if num[i] < min then end;
min := num[i];
end;
18. การหาความถี่
while num <> -1 do
begin
case num of
1 : score[num] := score[num] + 1;
2 : score[num] := score[num] + 1;
3 : score[num] := score[num] + 1;
else
19. การหาความถี่
Writeln(' You enter a wrong number.');
end;{end case}
write('Enter number you want to select 1-3 or -1
to end :');
readln (num);
end;{end while}
end;
24. การค้นหาแบบเส้นตรง
procedure getnum;
var i: integer; code :string[3];
begin
for i:= 1 to max do
begin
write('enter student code: ');
readln(code);
table[i]:= code;
end; end;
26. การค้นหาแบบเส้นตรง
while code <> '*' do
begin
while (flag = false) and (i <= max) do
begin
if table[i] = code then
flag := true
else
i:= i+1;
end;
27. การค้นหาแบบเส้นตรง
if flag = true then
begin
flag := false;
writeln('student code ',code,' is found');
end
else
writeln('student code ',code,' is not found');
28. การค้นหาแบบเส้นตรง
write('enter student code you want to search/ * to end ');
readln(code);
end; {end while}
end;
{main}
begin
getnum;
search_code;
end.
40. อาร์เรย์ 2 มิติ
• ถ้าต้องการเขียนตัวอักษรให้เต็ม 1 หน้ากระดาษ
สามารถเขียนโปรแกรมดังนี้
for I := 1 to 90 do
for j := 1 to 80 do
page[j] := character;
41. Read Write ค่าในอาร์เรย์
• เขียนโปรแกรมนาตัวเลขเก็บไว้ใน อาร์เรย์ 2 มิติ
program twodim;
uses wincrt;
const mrow= 4;
mcol= 3;
var table :array[1..4,1..3] of integer;
i,j:integer;
42. Read Write ค่าในอาร์เรย์
procedure getnum; begin
begin write('Enter
for I := 1 to 4 do number:');
begin read (table[i,j]);
for j := 1 to 3 do end;
end;
end;
47. การประมวลผลในอาร์เรย์
{**** init routine ****}
procedure init(row,col:integer);
begin
for i:= 1 to row do
for j:= 1 to col do
table[i,j] := 0;
end;
48. การประมวลผลในอาร์เรย์
{**** getnum routine ****}
procedure getnum(row,col:integer);
begin
for i:= 1 to row-1 do
begin
49. การประมวลผลในอาร์เรย์
for j:= 1 to col-1 do
begin
write(i,'.','Enter score for each subject: ');
readln(table[i,j]);
end;
writeln('-------------------------');
end;
end;
50. การประมวลผลในอาร์เรย์
{**** writeroutine ****}
procedure writenum(row,col:integer) ;
begin
{write column heading}
write('':12);
for i:=1 to col-1 do
write ('sub',i,'':2);
write ('avg');
writeln;
52. การประมวลผลในอาร์เรย์
for j := 1 to col do
write(table[i,j]:6:2);
writeln;
end;
end;
53. การประมวลผลในอาร์เรย์
{**** compute routine ****}
procedure compute(row,col:integer);
begin
{compute averge for subject}
for i:= 1 to row-1 do
begin
sum := 0;
54. การประมวลผลในอาร์เรย์
for j:= 1 to col-1 do
begin
sum := sum + table[i,j];
end;
avg_std := sum /(col-1);
table[i,col] := avg_std;
end;
55. การประมวลผลในอาร์เรย์
{compute averge for students}
for i:= 1 to col-1 do
begin
sum := 0;
for j:= 1 to row-1 do
sum := sum + table[j,i];
avg_sub := sum /(row-1);
table[j+1,i] := avg_sub;
end;
end;
56. การประมวลผลในอาร์เรย์
{**** main routin ****} nstd := nstd +1;
begin nsub := nsub +1;
write('Enter number of init(nstd,nsub);
student and number of getnum(nstd,nsub);
subject: '); compute(nstd,nsub);
readln(nstd,nsub); writenum(nstd,nsub);
end.{end main}