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:

a ⋅ b = [

a 0] [

b 0] + a ]

1

[ b ]

1

[ + [

a 2] [

b 2]

ZauwaŜmy, Ŝe rezultatem działania jest liczba – suma iloczynów składowych wektorów a i b: 2

Il _ skalarny = ∑

[

a i] [

b i]

i=0

b) Wektorowego:

 a ]

1

[

[

b ]

2 − [

a ]

2 b ]

1

[ 





a × b =  [

a ]

2 [

b ]

0 − [

a ]

0 [

b



]

2

 [

a ]

0 b ]

1

[ − a ]

1

[

[

b ]

0 





ZauwaŜmy, Ŝe rezultatem działania jest wektor – o składowych zdefiniowanych j.w. .

c) Tensorowego:

 [

a 0] [

b ]

0

[

a ]

0 b ]

1

[

[

a ]

0 [

b



]

2





a ⊗ b =  a ]

1

[

[

b ]

0

a ]

1

[ b ]

1

[

a ]

1

[

[

b ]

2 

 [

a 2] [

b ]

0

[

a ]

2 b ]

1

[

[

a ]

2 [

b







]

2

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:

Iloczyn _ tensorowy[ i, j] = [

a i] [

b j]

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: m−1

c = ∑ [

v i] [

w i]

i=0

b) MnoŜenie macierzy A i wektora v – zauwaŜmy, Ŝe wynikiem będzie wektor o wymiarze n, o składowych:

m−1

[

u i] = ∑ [

A i, j] ⋅ [

v j]

j =0

c) MnoŜenie macierzy A i macierzy B – zauwaŜmy, Ŝe wynikiem będzie macierz o wymiarach n × k , o składowych: m−1

C[ i, j] = ∑ [

A i, l] ⋅ [

B l, j]

l =0

Wyświetl na ekranie dane tablice oraz wyniki, zwolnij zarezerwowaną dynamicznie pamięć.