Wydział Mechatroniki i Budowy Maszyn
Zakład Technik Komputerowych i Uzbrojenia
Rok I, sem. I, Podstawy Informatyki
Opracował: dr hab. inż. Zbigniew Koruba, prof. PŚk
Ćwiczenie laboratoryjne nr 5
T
ABLICE DWUWYMIAROWE
(
MACIERZE
)
W
T
URBO
P
ASCALU
Przykład
Dana jest tablica dwuwymiarowa A (macierz) liczb rzeczywistych o wymiarach m x n. Na-
pisz program z zastosowaniem procedur i funkcji, który:
a) wczytuje elementy tablicy A wierszami (procedura);
b) wyświetla na ekranie elementy tablicy A wierszami (procedura);
c) wyznacza element minimalny tablicy A i podaje jego indeksy (procedura);
d) przepisuje do tablicy jednowymiarowej b elementy dodatnie tablicy A (procedura);
e) oblicza iloczyn elementów tablicy A zawartych w przedziale
[
]
]
5
,
5
−
(funkcja);
f) w programie głównym wywołuje niezbędne procedury i funkcje oraz wyświetla ele-
ment minimalny wraz z indeksami, iloczyn oraz wektor b.
program Tablica_dwuwymiarowa;
{Program z zastosowaniem typu tablicowego}
uses
crt;
const
m_max = 8; n_max = 10; k_max = 100;
type
macierz = array[1..m_max, 1..n_max] of real; {Zdefiniowanie typu tablicowego dwuwy-
miarowego}
wektor = array[1..k_max] of real; {Zdefiniowanie typu tablicowego jednowymia-
rowego}
procedure Wczytaj_tab2(m, n : byte; var A : macierz);
var
i, j : byte;
begin
for i:=1 to m do
for j:=1 to n do
begin
GoToXY(20,10);
Write('A(',i,',',j,')= '); Readln(A[i,j]);
1
GoToXY(20,10); DelLine;
end;
end;
procedure Wyswietl_tab2(m, n : byte; A : macierz);
var
i, j : byte;
begin
for i:=1 to m do
begin
for j:=1 to n do
Write('A(',i,',',j,')= ',A[i,j]:6:2);
Writeln
end;
end;
procedure Minimum(m,n : byte; A : macierz; var min : real; var nw, nk : byte);
var
i,j : byte;
begin
min:=A[1,1]; nw:=1; nk:=1;
for i:=1 to m do
for j:=1 to n do
if A[i,j] < min then
begin
nw:=i; nk:=j;
min:=A[i,j]
end;
end;
procedure Utworz_b(m,n : byte; A : macierz; var k : byte; var b : wektor);
var
i, j : byte;
begin
k:=0;
2
for i:=1 to m do
for j:=1 to n do
if A[i,j] > 0 then
begin
k:=k+1;
b[k]:=A[i,j];
end
end;
function Iloczyn(m,n : byte; A : macierz) : real;
var
i,j : byte;
il : real;
begin
il:=1;
for i:=1 to m do
for j:=1 to n do
if (A[i,j] >= -5) and (A[i,j] <=5) then il:=il*A[i,j];
Iloczyn:=il
end;
procedure Wyswietl_tab_1(k : byte; b : wektor);
var
i : byte;
begin
for i:=1 to k do
begin
Write(b[i]:6:2,' ');
if i mod 4 = 0 then Writeln
end
end;
var
m,n,k,nw,nk : byte;
kod : integer;
3
A : macierz;
b : wektor;
il,min : real;
str : string;
BEGIN
{Zabezpieczenie programu przed wprowadzeniem niewłaściwej danej liczbowej}
Repeat
ClrScr;
GoToXY(20,10);
Write('Podaj liczbę wierszy n= (2<=n<=8) ');
Readln(str);
val(str,n,kod); {procedura konwersji zmiennej łańcuchowej na zmienną liczbową}
Until (kod = 0) and (n >= 2) and (n <= 8);
Repeat
ClrScr;
GoToXY(20,10);
Write('Podaj liczbę kolumn m= (2<=m<=10) ');
Readln(str);
val(str,m,kod);
Until (kod = 0) and (m >= 2) and (m <= 10);
ClrScr;
Wczytaj_tab2(m,n,a);
Wyswietl_tab2(m,n,a);
Minimum(m,n,A,min,nw,nk);
Utworz_b(m,n,A,k,b);
ClrScr;
Wyswietl_tab_1(k,b);
GoToXY(20,14); Write('Element minimalny: ',min:6:2,' nr wiersza: ',nw,' nr kolumny: ',
nk);
GoToXY(20,15); Write('Iloczyn wynosi: ',Iloczyn(m,n,A):8:3);
Readkey
END.
4
Zadania do samodzielnego rozwiązania
1. Opracować i uruchomić program, który na podstawie danych ocen punktowych (od 0 do
100 pkt) z k przedmiotów (k< 8) uzyskanych w 1 semestrze przez n studentów (n <= 30)
wyznacza:
numer studenta o najwyższej średniej,
numer przedmiotu o najniższej średniej.
Wskazówka: Oceny punktowe wprowadzić do tablicy dwuwymiarowej przy czym w jednym
wierszu zapisywane są oceny dla jednego studenta.
2. Dla kwadratowej tablicy A o wymiarach n x n napisać program z zastosowaniem proce-
dur i funkcji wyznaczający:
a) sumę elementów tablicy z wierszy od k-ego do l-ego (k, l – dane stałe),
b) sumę elementów leżących na głównej przekątnej,
c) sumę elementów pod główną przekątną,
d) element maksymalny i jego indeksy,
e) sumę elementów w wierszu, w którym znajduje się element maksymalny,
f) nr kolumny, w której średnia elementów jest największa,
g) tablicę kwadratową B o elementach zerojedynkowych zbudowaną w ten sposób, że
zera odpowiadają tym komórkom tablicy A w których elementy są dodatnie, zaś je-
dynki – elementom ujemnym tablicy A.
5