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 |
©2024 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 ©2024 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.