Strict Standards: Declaration of action_plugin_importoldchangelog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /DISK2/WWW/pavel-rimsky.cz/vyuka/wiki/lib/plugins/importoldchangelog/action.php on line 8 Strict Standards: Declaration of action_plugin_importoldindex::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /DISK2/WWW/pavel-rimsky.cz/vyuka/wiki/lib/plugins/importoldindex/action.php on line 0 Deprecated: Function split() is deprecated in /DISK2/WWW/pavel-rimsky.cz/vyuka/wiki/inc/auth.php on line 154 Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /DISK2/WWW/pavel-rimsky.cz/vyuka/wiki/inc/auth.php on line 456 Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /DISK2/WWW/pavel-rimsky.cz/vyuka/wiki/inc/auth.php on line 456 Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /DISK2/WWW/pavel-rimsky.cz/vyuka/wiki/inc/auth.php on line 453 Strict Standards: Only variables should be passed by reference in /DISK2/WWW/pavel-rimsky.cz/vyuka/wiki/doku.php on line 71 operace_s_maticemi [Programování]
 

Zadání

Definujte datový typ Matice jako dvojrozměrné pole o pevné velikosti reprezentující čtvercovou matici. Napište tyto procedury:

  • generuj(var m: Matice) – matici m naplní náhodně vygenerovanými prvky (využijte funkci Random(n) : Longint;, která generuje náhodné přirozené číslo).
  • transponuj(var m: Matice) – transponuje matici m
  • nasob(var m1, m2, m: Matice) – vynásobí matice m1 a m2 a výsledek uloží do m
  • secti(var m1, m2, m: Matice) – sečte matice m1 a m2 a výsledek uloží do m

Řešení

 
const MAX = 10;          {nejvyssi mozne cislo v matici}
      VEL = 5;           {pocet radku a sloupcu ve ctvercove matici}
 
 
type Matice = array [1..VEL, 1..VEL] of longint;
 
var
  i, j, k : integer;     {citace v cyklu for}
 
procedure generuj(var m: Matice);
begin
  for i := 1 to VEL do begin
    for j := 1 to VEL do begin
      m[i, j] := random(MAX);
    end;
  end;
end;
 
procedure vypis(var m: Matice);
begin
  for i := 1 to VEL do begin
    for j := 1 to VEL do write(m[i, j], ' ');
    writeln;
  end;
end;
 
procedure transponuj(var m: Matice);
var tmp: longint;
begin
  for i := 1 to VEL do begin
    for j := i + 1 to VEL do begin
      tmp := m[i,j];
      m[i, j] := m[j, i];
      m[j, i] := tmp;
    end;
  end;
end;
 
procedure nasob(var m1, m2, m: Matice);
begin
  for i := 1 to VEL do begin
    for j := 1 to VEL do begin
      {hodnotu na -item radku a j-tem sloupci spocitame podle definice nasobeni matic}
      for k := 1 to VEL do m[i, j] := m1[i, k] * m2[k, j];
    end;
  end;
end;
 
procedure secti(var m1, m2, m: Matice);
begin
  for i := 1 to VEL do begin
    for j := 1 to VEL do m[i,j] := m1[i,j] + m2[i,j];
  end;
end;
 
 
{hlavni program}
 
var a1, a2, a3 : Matice;
 
begin
     {otestujeme generovani}
     writeln('Dve nahodne vygenerovane matice A1, A2: ');
     writeln;
     generuj(a1);
     vypis(a1);
     writeln;
     generuj(a2);
     vypis(a2);
     writeln;
 
     {otestujeme transpozici}
     writeln('Transponovana matice k A1: ');
     writeln;
     transponuj(a1);
     vypis(a1);
     writeln;
 
     {otestujeme scitani}
     writeln('Matice A3 vznikne souctem matic A1 a A2: ');
     writeln;
     secti(a1, a2, a3);
     vypis(a3);
     writeln;
 
     {otestujeme nasobeni}
     writeln('Matice A4 vznikne soucinem matic A1 a A2: ');
     writeln;
     nasob(a1,a2,a3);
     vypis(a3);
 
     readln;
end.
 
operace_s_maticemi.txt · Poslední úprava: 2007/11/22 17:24 autor: rimsky
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Strict Standards: Only variables should be passed by reference in /DISK2/WWW/pavel-rimsky.cz/vyuka/wiki/doku.php on line 79