• Nie Znaleziono Wyników

Rok akademicki 2020/2021 Rok akademicki 2020/2021 Rok akademicki 2020/2021 Rok akademicki 2020/2021

N/A
N/A
Protected

Academic year: 2021

Share "Rok akademicki 2020/2021 Rok akademicki 2020/2021 Rok akademicki 2020/2021 Rok akademicki 2020/2021"

Copied!
16
0
0

Pełen tekst

(1)

Politechnika Białostocka

Politechnika Białostocka -- Wydział Elektryczny Wydział Elektryczny

Elektrotechnika, semestr III, studia stacjonarne I stopnia, dualne Elektrotechnika, semestr III, studia stacjonarne I stopnia, dualne

Rok akademicki 2020/2021 Rok akademicki 2020/2021 Rok akademicki 2020/2021 Rok akademicki 2020/2021

Pracownia nr 6 (18.11.2020) Pracownia nr 6 (18.11.2020)

dr inż. Jarosław Forenc

(2)

Język C

Język C -- deklaracja tablica dwuwymiarowej deklaracja tablica dwuwymiarowej

float tab[3][4]; 0 1 2 3

float tab[3][4];

nazwa

liczba kolumn

typ elementów liczba wierszy

0 1 2 3

0 1 2

indeks kolumny

indeks wiersza

Rozmiar tablicy (liczba wierszy, liczba kolumn) to wartość:

– całkowita, dodatnia

– znana na etapie kompilacji programu

(stała liczbowa: 5, #define N 5, const int n = 5;)

(3)

Język C

Język C -- odwołania do elementów macierzy odwołania do elementów macierzy

[ ] - dwuargumentowy operator indeksowania

indeks (numer) kolumny

nazwa tablicy

[ ] dwuargumentowy operator indeksowania

tab[1][2];

Indeks:

indeks (numer) wiersza

– stała liczbowa, np. 0, 1, 10

– nazwa zmiennej, np. i, idx

– wyrażenie, np. i*j+5

Brak sprawdzania

poprawności indeksów!

(4)

Język C

Język C -- inicjalizacja elementów macierzy inicjalizacja elementów macierzy

0 1 2

int T[2][3] = {{1,2,3},{4,5,6}};

int T[2][3] {1,2,3,4};

int T[2][3] = {1,2,3,4,5,6};

1 0

2 3 1 2

4 5 6

0 1

int T[2][3] = {1,2,3,4};

int T[2][3] = {{1},{4,5}};

(5)

Język C

Język C -- inicjalizacja elementów macierzy inicjalizacja elementów macierzy

0 0

0 0 1 2

int T[2][3] = {0}; 0

int T[][3] = {{1,2,3},{4,5,6}};

1 0

2 3 1 2

4 5 6

0 1

0 0 0

0 0 0

0 1

wyzerowanie elementów macierzy

pominięcie liczby wierszy

(6)

Język C

Język C -- operacje na macierzy operacje na macierzy

#include <stdio.h>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 3 /* liczba wierszy */

#define M 3 /* liczba kolumn */

int main(void) {

M

int tab[N][M];

int i, j;

0 1 2

0

1

2

N

(7)

Język C

Język C -- operacje na macierzy operacje na macierzy

/* generowanie pseudolosowe elementów macierzy */

/* generowanie pseudolosowe elementów macierzy */

srand((unsigned int) time(NULL));

for (i=0; i<N; i++)

for (j=0; j<M; j++)

tab[i][j] = rand() % 10;

M

9

0

3 1

1 2

6 4 8

9 4 6

0

1

2

N

0 1 2

0

1

2

kolejność zapisywania

wartości elementów

macierzy (wierszami)

(8)

Język C

Język C -- operacje na macierzy operacje na macierzy

/* generowanie pseudolosowe elementów macierzy */

/* generowanie pseudolosowe elementów macierzy */

srand((unsigned int) time(NULL));

for (j=0; j<M; j++)

for (i=0; i<N; i++)

tab[i][j] = rand() % 10;

M

9

0

3 1

1 2

6 4 8

9 4 6

0

1

2

kolejność zapisywania N

wartości elementów

macierzy (kolumnami)

(9)

Program INF_D06_1: operacje na tablicy Program INF_D06_1: operacje na tablicy

tablica wypełniona zerami

0

0

0 0

1 2

0 0 0

0

1

N

M

0 0 0 0

0 0 0 0

3 4 5 6

0 0 0

2

N

0 0 0 0

0 0 0 0 0 0 0

3

(10)

Program INF_D06_1: operacje na tablicy Program INF_D06_1: operacje na tablicy

zapisz do tablicy (wierszami) kolejne liczby całkowite 1, 2, 3, …;

wyświetl elementy tablicy z podziałem na wiersze i kolumny wyświetl elementy tablicy z podziałem na wiersze i kolumny

1

0

2 3

1 2

8 9 10

0

1

N

M

4 5 11 12

6 7 13 14

3 4 5 6

15 16 17

2

N

18 19 20 21 22 23 24 25 26 27 28

3

(11)

Program INF_D06_1: operacje na tablicy Program INF_D06_1: operacje na tablicy

zapisz do tablicy (kolumnami) kolejne liczby całkowite 1, 2, 3, …;

wyświetl elementy tablicy z podziałem na wiersze i kolumny

wyświetl elementy tablicy z podziałem na wiersze i kolumny

(12)

Program INF_D06_1: operacje na tablicy Program INF_D06_1: operacje na tablicy

zapisz do tablicy wygenerowane pseudolosowo liczby całkowite z zakresu

-9, 9; wyświetl elementy tablicy z podziałem na wiersze i kolumny

 9, ; wyświetl elementy tablicy z podziałem na wiersze i kolumny

-1

0

0 -2

1 2

-6 -7 6

0

1

N

-7 6 -9 6

3 7 -2 6

3 4 5 6

M

9 2 -8

2

N

-7 7 9 9 2 -4 -7 3 9 -2 7

3

(13)

Program INF_D06_1: operacje na tablicy Program INF_D06_1: operacje na tablicy

zapisz do tablicy wygenerowane pseudolosowo liczby całkowite z zakresu

-9, 9; wyświetl elementy tablicy z podziałem na wiersze i kolumny

 9, ; wyświetl elementy tablicy z podziałem na wiersze i kolumny

-1

0

0 -2

1 2

-6 -7 6

0

1

N

-7 6 -9 6

3 7 -2 6

3 4 5 6

M

9 2 -8

2

N

-7 7 9 9 2 -4 -7 3 9 -2 7

3

(14)

Program INF_D06_1: operacje na tablicy Program INF_D06_1: operacje na tablicy

zastąp wszystkie ujemne elementy tablicy wartością zero;

wyświetl elementy tablicy z podziałem na wiersze i kolumny

wyświetl elementy tablicy z podziałem na wiersze i kolumny

(15)

Program INF_D06_3: mnożenie macierzy Program INF_D06_3: mnożenie macierzy

Operacja: C = AB

 A[N][M] macierz N × M elementowa

 

 

 

 

=

 

 

33 32

31

23 22

21

13 12

11

33 32

31

23 22

21

13 12

11

33 32

31

23 22

21

13 12

11

b b

b

b b

b

b b

b

a a

a

a a

a

a a

a

c c

c

c c

c

c c

c

 A[N][M] - macierz N × M - elementowa

 B[M][K] - macierz M × K - elementowa

 C[N][K] - macierz N × K - elementowa

N M N

31 33 21

32 11

31 31

31 23 21

22 11

21 21

31 13 21

12 11

11 11

b a b

a b

a c

b a b

a b

a c

b a b

a b

a c

+ +

=

+ +

=

+ +

=

32 33 22

32 12

31 32

32 23 22

22 12

21 22

32 13 22

12 12

11 12

b a b

a b

a c

b a b

a b

a c

b a b

a b

a c

+ +

=

+ +

=

+ +

=

33 33 23

32 13

31 33

33 23 23

22 13

21 23

33 13 23

12 13

11 13

b a b

a b

a c

b a b

a b

a c

b a b

a b

a c

+ +

=

+ +

=

+ +

= M K

K

(16)

Program INF_D06_3: mnożenie macierzy Program INF_D06_3: mnożenie macierzy

Operacja: C = AB ( A [N][M], B [M][K], C [N][K])

Program w języku C:

(i) (i)

(j)

(j) (k) (k)

 

 

 

 

=

 

 

33 32

31

23 22

21

13 12

11

33 32

31

23 22

21

13 12

11

33 32

31

23 22

21

13 12

11

b b

b

b b

b

b b

b

a a

a

a a

a

a a

a

c c

c

c c

c

c c

c

N M

M K K

N

for (i=0; i<N; i++) for (k=0; k<K; k++) {

C[i][k] = 0.0;

for (j=0; j<M; j++)

C[i][k] = C[i][k] + A[i][j] * B[j][k];

}

K k

N b i

a c

M

j

jk ij

ik

1 , 2 , ,

, , 2 , , 1

1

=

⋅ =

= 

=

Cytaty

Powiązane dokumenty

Ocena ciągła, test kontrolny, udział w dyskusji tematycznej związanej z realizowanym tematem konspekt zabiegowy z masażu, prezentacja multimedialna przedstawiająca

2pkt: Bardzo rzetelnie dobiera rodzaj oraz ilość ćwiczeń do wybranej tematyki projektu 1pkt: 60% ćwiczeń dobiera dobrze do wybranej tematyki projektu. 0pkt: mniej niż 60%

Wykłady (WY) Seminaria (SE) Ćwiczenia audytoryjne (CA) Ćwiczenia kierunkowe - niekliniczne (CN) Ćwiczenia kliniczne (CK) Ćwiczenia laboratoryjne (CL) Ćwiczenia w

Wykłady (WY) Seminaria (SE) Ćwiczenia audytoryjne (CA) Ćwiczenia kierunkowe - niekliniczne (CN) Ćwiczenia kliniczne (CK) Ćwiczenia laboratoryjne (CL) Ćwiczenia w

Praca pisemna zbliżona do zadanej objętości, zawierająca próby stosowania terminologii filozoficznej, tezy przeważnie zrozumiałe, argumentacja pozbawiona rażących

Wykłady (WY) Seminaria (SE) Ćwiczenia audytoryjne (CA) Ćwiczenia kierunkowe - niekliniczne (CN) Ćwiczenia kliniczne (CK) Ćwiczenia laboratoryjne (CL) Ćwiczenia w

Praca zaliczeniowa zasadniczo poprawna pod względem merytorycznym, zawierająca własne refleksje i spostrzeżenia. Dostateczna

ocena udziału w dyskusji kie- rowanej oraz pracy samo- kształceniowej ocena udziału w dyskusji kie- rowanej oraz pracy samo- kształceniowej. ocena udziału w dyskusji