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 = [] for i in range(m): a = [] b = [] c = [] for j in range(n): a.append(random.randrange(100)) b.append(random.randrange(100)) c.append(0) A.append(a) B.append(b) C.append(c) # 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) # koniec, zwalniamy pamięć zajętą przez macierze del A,B,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.