Informatyka - Podstawy Programowania w J
ę
zyku C++
Kierownik przedmiotu: Sławomir Czarnecki
prow. Rafał Michalczyk / Zbigniew Trybocki
Zadania na laboratorium nr. 6 dla grupy 4
1. Zdefiniuj dwa wektory a[3], b[3]. Składowymi wektorów niech będą liczby losowe z
przedziału [-10,10]. Wyświetl na ekranie składowe obydwu wektorów.
Oblicz i wyświetl na ekranie wartości trzech kolejnych iloczynów:
a)
Skalarnego:
]
2
[
]
2
[
]
1
[
]
1
[
]
0
[
]
0
[
b
a
b
a
b
a
b
a
+
+
=
⋅
Zauważmy, że rezultatem działania jest liczba – suma iloczynów składowych wektorów a i b:
∑
=
=
2
0
]
[
]
[
_
i
i
b
i
a
skalarny
Il
b)
Wektorowego:
−
−
−
=
×
]
0
[
]
1
[
]
1
[
]
0
[
]
2
[
]
0
[
]
0
[
]
2
[
]
1
[
]
2
[
]
2
[
]
1
[
b
a
b
a
b
a
b
a
b
a
b
a
b
a
Zauważmy, że rezultatem działania jest wektor – o składowych zdefiniowanych j.w. .
c)
Tensorowego:
=
⊗
]
2
[
]
2
[
]
1
[
]
2
[
]
0
[
]
2
[
]
2
[
]
1
[
]
1
[
]
1
[
]
0
[
]
1
[
]
2
[
]
0
[
]
1
[
]
0
[
]
0
[
]
0
[
b
a
b
a
b
a
b
a
b
a
b
a
b
a
b
a
b
a
b
a
Zauważmy, że rezultatem działania jest macierz – o składowych równych iloczynom
odpowiednich składowych wektorów a i b. W ogólnej postaci składowa macierzy wynikowej
jest równa:
]
[
]
[
]
,
[
_
j
b
i
a
j
i
tensorowy
Iloczyn
=
2. Rozwiąż wszystkie polecenia zadania nr 1 korzystając z funkcji zapisanych w bibliotece
„bib.h”
:
a)
tworzenie w sposób dynamiczny wektora:
typ_zmiennych
*nazwa_wektora=NEW(wartość_składowych, wymiar_wektora);
Przykład:
double
* v=NEW(0.0, 10);
b)
tworzenie w sposób dynamiczny macierzy:
typ_zmiennych
**nazwa_macierzy=NEW(wartość_składowych,ilość_wierszy, ilość_kolumn);
Przykład:
int
** A=NEW(0, 5,10);
c)
zwolnienie zarezerwowanej dynamicznie na stercie pamięci pod wektor/macierz:
DEL(nazwa_wektora_lub_macierzy)
d)
wyświetlenie na ekranie konsoli wektora:
display(„dowolny_tekst”, nazwa_wektora, wymiar_wektora);
Przykład:
display(„Wektor v ma postac”, v, 10);
e)
wyświetlenie na ekranie konsoli macierzy:
display(„dowolny_tekst”, nazwa_macierzy, ilość_wierszy, ilość_kolumn);
Przykład:
display(„Macierz A ma postac”, A, 5, 10);
f)
generowanie liczb pseudolosowych z dowolnego przedziału:
random(od,do);
Przykład – losowanie liczby całkowitej:
random(-10,10);
Przykład – losowanie liczby zmiennoprzecinkowej:
random(-10.0,10.0);
3. Korzystając z funkcji dostępnych w bibliotece
„bib.h”
stwórz następujące tablice o
wymiarach wczytywanych z klawiatury m, n, k:
- wektory v i w o wymiarze m
- macierz A o wymiarach [n, m] i macierz B o wymiarach [m, k]
Składowe tablic zapełnij liczbami losowymi z przedziału [a,b], np.[-10,10].
Napisz kod realizujący następujące operacje:
a)
Mnożenie wektora v i wektora w – zauważmy, że wynikiem będzie liczba:
∑
−
=
=
1
0
]
[
]
[
m
i
i
w
i
v
c
b)
Mnożenie macierzy A i wektora v – zauważmy, że wynikiem będzie wektor o
wymiarze n, o składowych:
∑
−
=
⋅
=
1
0
]
[
]
,
[
]
[
m
j
j
v
j
i
A
i
u
c)
Mnożenie macierzy A i macierzy B – zauważmy, że wynikiem będzie macierz o
wymiarach
k
n
×
, o składowych:
∑
−
=
⋅
=
1
0
]
,
[
]
,
[
]
,
[
m
l
j
l
B
l
i
A
j
i
C
Wyświetl na ekranie dane tablice oraz wyniki, zwolnij zarezerwowaną dynamicznie
pamięć.