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 pomnożyć macierz |
Operacja mnożenia macierzy
K01: Dla iw = 1,2,…,m: wykonuj krok K02
K02: Dla ik = 1,2,…,n: wykonuj: A[iw,ik] ← A[iw,ik]×c
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 macierz o losowej
liczbie wierszy (od 2 do 9) i losowej
liczbie kolumn (od 2 do 9) oraz losowy
skalar z zakresu |
Pascal// Mnożenie macierzy przez skalar // Data: 6.01.2010 // (C)2020 mgr Jerzy Wałaszek //----------------------------- program mmulc; type NInt = array of integer; // typ tablic wierszy MInt = array of NInt; // typ tablicy wskaźników var A : MInt; c,n,m,iw,ik : integer; begin Randomize; // losujemy wymiary macierzy m := random(8)+2; n := random(8)+2; // tworzymy tablicę wskaźników SetLength(A,m); // tworzymy tablice wierszy for iw := 0 to m-1 do SetLength(A[iw],n); // wypełniamy macierz losowymi liczbami for iw := 0 to m-1 do for ik := 0 to n-1 do A[iw][ik] := random(100); // losujemy skalar c c := random(21)-10; // wyświetlamy macierz writeln('m = ',m); writeln('n = ',n); writeln; for iw := 0 to m-1 do begin for ik := 0 to n-1 do write(A[iw][ik]:5); writeln; end; // wyświetlamy skalar writeln; writeln('c = ',c); writeln; // mnożymy macierz przez skalar for iw := 0 to m-1 do for ik := 0 to n-1 do A[iw][ik] := c*A[iw][ik]; // wyświetlamy macierz wynikową for iw := 0 to m-1 do begin for ik := 0 to n-1 do write(A[iw][ik]:5); writeln; end; // koniec, zwalniamy pamięć zajętą przez macierz for iw := 0 to m-1 do SetLength(A[iw],0); SetLength(A,0) end. |
// Mnożenie macierzy przez skalar // Data: 6.01.2010 // (C)2020 mgr Jerzy Wałaszek //----------------------------- #include <iostream> #include <iomanip> #include <cstdlib> #include <ctime> using namespace std; int main() { int ** A,c,n,m,iw,ik; srand(time(NULL)); // losujemy wymiary macierzy m = rand()%8+2; n = rand()%8+2; // tworzymy tablicę wskaźników A = new int * [m]; // tworzymy tablice wierszy for(iw = 0; iw < m; iw++) A[iw] = new int [n]; // wypełniamy macierz losowymi liczbami for(iw = 0; iw < m; iw++) for(ik = 0; ik < n; ik++) A[iw][ik] = rand()%100; // losujemy skalar c c = rand()%21-10; // wyświetlamy macierz cout << "m = " << m << endl << "n = " << n << endl << endl; for(iw = 0; iw < m; iw++) { for(ik = 0; ik < n; ik++) cout << setw(5) << A[iw][ik]; cout << endl; } // wyświetlamy skalar cout << endl << "c = " << c << endl << endl; // mnożymy macierz przez skalar for(iw = 0; iw < m; iw++) for(ik = 0; ik < n; ik++) A[iw][ik] *= c; // wyświetlamy macierz wynikową for(iw = 0; iw < m; iw++) { for(ik = 0; ik < n; ik++) cout << setw(5) << A[iw][ik]; cout << endl; } // koniec, zwalniamy pamięć zajętą przez macierz for(iw = 0; iw < m; iw++) delete [] A[iw]; delete [] A; return 0; } |
Basic' Mnożenie macierzy przez skalar ' Data: 6.01.2010 ' (C)2020 mgr Jerzy Wałaszek '----------------------------- Dim As Integer c,n,m,iw,ik Randomize ' losujemy wymiary macierzy m = Int(Rnd(1)*8)+2 n = Int(Rnd(1)*8)+2 ' tworzymy macierz dynamicznie Dim As Integer A(1 To m,1 To n) ' wypełniamy macierz losowymi liczbami For iw = 1 To m For ik = 1 To n A(iw,ik) = Int(Rnd(1)*100) Next Next ' losujemy skalar c c = Int(Rnd(1)*21)-10 ' wyświetlamy macierz Print "m = ";m Print "n = ";n Print For iw = 1 To m For ik = 1 To n Print Using "#####";A(iw,ik); Next Print Next ' wyświetlamy skalar Print Print "c = ";c Print ' mnożymy macierz przez skalar For iw = 1 To m For ik = 1 To n A(iw,ik) *= c Next Next ' wyświetlamy macierz wynikową For iw = 1 To m For ik = 1 To n Print Using "#####";A(iw,ik); Next Print Next End |
Python
(dodatek)# Mnożenie macierzy przez skalar # Data: 8.04.2024 # (C)2024 mgr Jerzy Wałaszek #----------------------------- import random # wyświetla macierz #------------------ def mprint(x): for i in x: for j in i: print("%5d" % j,end="") print() print() # losujemy wymiary macierzy m = random.randrange(2,10) n = random.randrange(2,10) # tworzymy macierz z losowymi elementami A = [] for i in range(m): a = [] for j in range(n): a.append(random.randrange(100)) A.append(a) # losujemy skalar c c = random.randrange(-10,11) # wyświetlamy macierz print("m =",m) print("n =",n) print() mprint(A) # wyświetlamy skalar print("c =",c) print() # mnożymy macierz przez skalar for iw in range(m): for ik in range(n): A[iw][ik] *= c # wyświetlamy macierz wynikową mprint(A) # koniec, zwalniamy pamięć zajętą przez macierz del A,a |
Wynik: |
m = 7 n = 4 7 3 27 19 45 87 1 85 57 44 94 10 47 4 46 73 99 49 79 5 3 79 15 36 39 82 92 35 c = -6 -42 -18 -162 -114 -270 -522 -6 -510 -342 -264 -564 -60 -282 -24 -276 -438 -594 -294 -474 -30 -18 -474 -90 -216 -234 -492 -552 -210 |
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.