background image

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

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 elementy dodatnie tablicy (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

background image

        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

background image

   for i:=1 to do 

    for j:=1 to 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 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 mod 4 = 0 then Writeln 

     end 

end; 

 

var 

   m,n,k,nw,nk : byte; 

   kod               : integer; 

 

3

background image

   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

background image

   

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