|
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 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 = [[random.randrange(100) for j in range(n)] \
for i in range(m)]
# 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)
|
| 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 ©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.