|
Serwis Edukacyjny w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
ProblemNależy dodać macierz
|
Operacja dodawania dwóch macierzy polega na dodawaniu ich elementów leżących w tych samych wierszach i kolumnach. Wynika z tego oczywisty wniosek, iż dodawane macierze muszą posiadać takie same wymiary.
K01: Dla iw = 1, 2, …, m: wykonuj krok K02 K02: Dla ik = 1, 2, …, n: wykonuj: C[iw, ik]← A[iw, ik]+B[iw, ik] K04: Zakończ
|
Uwaga: Zanim uruchomisz program, przeczytaj wstęp do tego artykułu, w którym wyjaśniamy funkcje tych programów oraz sposób korzystania z nich. |
| Program generuje trzy macierze o losowej lecz równej liczbie wierszy
|
Pascal// Dodawanie macierzy
// Data: 7.01.2010
// (C)2020 mgr Jerzy Wałaszek
//-----------------------------
program madd;
type
NInt = array of integer; // typ tablic wierszy
MInt = array of NInt; // typ tablicy wskaźników
var
A, B, C : MInt;
n, m, iw, ik : integer;
begin
Randomize;
// losujemy wymiary macierzy
m := random(5)+2;
n := random(5)+2;
// tworzymy tablice wskaźników
SetLength(A, m);
SetLength(B, m);
SetLength(C, m);
// tworzymy tablice wierszy
for iw := 0 to m-1 do
begin
SetLength(A[iw], n);
SetLength(B[iw], n);
SetLength(C[iw], n);
end;
// wypełniamy macierze A i B losowymi liczbami
for iw := 0 to m-1 do
for ik := 0 to n-1 do
begin
A[iw][ik] := random(100);
B[iw][ik] := random(100);
end;
// wyświetlamy macierze A i B
writeln('m = ', m);
writeln('n = ', n);
writeln;
writeln('Macierz A:');
for iw := 0 to m-1 do
begin
for ik := 0 to n-1 do
write(A[iw][ik]:5);
writeln;
end;
writeln;
writeln('Macierz B:');
for iw := 0 to m-1 do
begin
for ik := 0 to n-1 do
write(B[iw][ik]:5);
writeln;
end;
// sumujemy macierz A i B w C
for iw := 0 to m-1 do
for ik := 0 to n-1 do
C[iw][ik] := A[iw][ik]+B[iw][ik];
// wyświetlamy macierz wynikową
writeln;
writeln('Macierz C = A+B:');
for iw := 0 to m-1 do
begin
for ik := 0 to n-1 do
write(C[iw][ik]:5);
writeln;
end;
// koniec, zwalniamy pamięć
// zajętą przez macierze
for iw := 0 to m-1 do
begin
SetLength(A[iw], 0);
SetLength(B[iw], 0);
SetLength(C[iw], 0);
end;
SetLength(A, 0);
SetLength(B, 0);
SetLength(C, 0);
end. |
// Dodawanie macierzy
// Data: 7.01.2010
// (C)2020 mgr Jerzy Wałaszek
//-----------------------------
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int **A, **B, **C, n, m, iw, ik;
srand(time(NULL));
// losujemy wymiary macierzy
m = rand()%4+2;
n = rand()%4+2;
// tworzymy tablicę wskaźników
A = new int * [m];
B = new int * [m];
C = new int * [m];
// tworzymy tablice wierszy
for(iw = 0; iw < m; iw++)
{
A[iw] = new int [n];
B[iw] = new int [n];
C[iw] = new int [n];
}
// wypełniamy macierze A i B
// losowymi liczbami
for(iw = 0; iw < m; iw++)
for(ik = 0; ik < n; ik++)
{
A[iw][ik] = rand()%100;
B[iw][ik] = rand()%100;
}
// wyświetlamy macierze A i B
cout << "m = " << m << endl
<< "n = " << n << endl << endl
<< "Macierz A:" << endl;
for(iw = 0; iw < m; iw++)
{
for(ik = 0; ik < n; ik++)
cout << setw(5) << A[iw][ik];
cout << endl;
}
cout << endl << "Macierz B:"
<< endl;
for(iw = 0; iw < m; iw++)
{
for(ik = 0; ik < n; ik++)
cout << setw(5) << B[iw][ik];
cout << endl;
}
// sumujemy macierz A i B w C
for(iw = 0; iw < m; iw++)
for(ik = 0; ik < n; ik++)
C[iw][ik] = A[iw][ik]+B[iw][ik];
// wyświetlamy macierz wynikową
cout << endl << "Macierz C = A+B:"
<< endl;
for(iw = 0; iw < m; iw++)
{
for(ik = 0; ik < n; ik++)
cout << setw(5) << C[iw][ik];
cout << endl;
}
// koniec, zwalniamy pamięć
// zajętą przez macierze
for(iw = 0; iw < m; iw++)
{
delete [] A[iw];
delete [] B[iw];
delete [] C[iw];
}
delete []A;
delete []B;
delete []C;
return 0;
} |
Basic' Dodawanie macierzy
' Data: 7.01.2010
' (C)2020 mgr Jerzy Wałaszek
'-----------------------------
Dim As Integer n, m, iw, ik
Randomize
' losujemy wymiary macierzy
m = Int(Rnd(1)*5)+2
n = Int(Rnd(1)*5)+2
' tworzymy macierze
Dim As Integer A(1 To m, 1 To n), _
B(1 To m, 1 To n), _
C(1 To m, 1 To n)
' wypełniamy macierze A i B losowymi liczbami
For iw = 1 To m
For ik = 1 To n
A(iw, ik) = Int(Rnd(1)*100)
B(iw, ik) = Int(Rnd(1)*100)
Next
Next
' wyświetlamy macierze A i B
Print "m = ";m
Print "n = ";n
Print
Print "Macierz A:"
For iw = 1 To m
For ik = 1 To n
Print Using "#####";A(iw, ik);
Next
Print
Next
Print
Print "Macierz B:"
For iw = 1 To m
For ik = 1 To n
Print Using "#####";B(iw, ik);
Next
Print
Next
' sumujemy macierz A i B w C
For iw = 1 To m
For ik = 1 To n
C(iw, ik) = A(iw, ik)+B(iw, ik)
Next
Next
' wyświetlamy macierz wynikową
Print
Print "Macierz C = A+B:"
For iw = 1 To m
For ik = 1 To n
Print Using "#####";C(iw, ik);
Next
Print
Next
End |
Python
(dodatek)# Dodawanie macierzy
# Data: 9.04.2024
# (C)2024 mgr Jerzy Wałaszek
# --------------------------
import random
# wyświetla macierz
#------------------
def mprint(t, x):
print(t)
for i in x:
for j in i:
print("%5d" % j, end="")
print()
print()
# losujemy wymiary macierzy
m = random.randrange(2, 6)
n = random.randrange(2, 6)
# tworzymy macierze
a = []
b = []
c = []
f = [0] * n
for i in range(m):
d = []
e = []
for j in range(n):
d.append(random.randrange(100))
e.append(random.randrange(100))
a.append(d)
b.append(e)
c.append(f.copy())
# wyświetlamy macierze A i B
print("m =", m)
print("n =", n)
print()
mprint("Macierz A:", a)
mprint("Macierz B:", b)
# sumujemy macierz A i B w C
for iw in range(m):
for ik in range(n):
c[iw][ik] = a[iw][ik]+b[iw][ik]
# wyświetlamy macierz wynikową
mprint("Macierz C = A+B:", c)
|
| Wynik: |
m = 4
n = 5
Macierz A:
94 49 29 37 60
13 39 35 7 73
2 30 15 98 3
62 42 46 7 23
Macierz B:
81 56 4 40 9
13 28 67 80 63
80 9 69 89 7
27 17 55 5 20
Macierz C = A+B:
175 105 33 77 69
26 67 102 87 136
82 39 84 187 10
89 59 101 12 43
|
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.