Inf Lab06

background image

Informatyka - Podstawy Programowania w Języku C++

prow. Sławomir Czarnecki

Zadania na laboratorium nr. 6


1. Zdefiniuj następującą funkcję f:

( )

( )

( )

2

10

9

1

10 sin

cos

sin

3

100

20

f x

x

x

x

x

x

=

+

+

,


a następnie wywołaj ją w programie (dla dowolnej wartości x) wyświetlając na ekranie wynik.
Deklaracja funkcji f:

double

f(

double

x).


2. Zdefiniuj dwie funkcje (ich deklaracje są podane poniżej):

void

swap_value(

double

x,

double

y);

void

swap_reference(

double

& x,

double

& y);

których kod ma realizować zamianę wartości dwóch zmiennych: x i y :

• swap_value(

double

x,

double

y) (zmienne x i y przekazywane przez wartość),

• swap_reference(

double

& x,

double

& y) (zmienne x i y przekazywane przez referencję).


Przeprowadź test polegający na wyświetleniu na ekranie wartości przekazywanych do tych
funkcji zmiennych przed i po ich wywołaniu.

3. Zdefiniuj funkcję

void

point(

double

** T,

long

m,

long

n,

long

a,

long

b) inicjalizującą

składowe macierzy T o wymiarach

m n

×

całkowitymi liczbami pseudolosowymi z przedziału

domkniętego

[ ]

,

a b

dla ,

a b ∈ ℤ (zakładamy, że a

b

< ). Parametr m oznacza żądaną liczbę

punktów w przestrzeni

n

. Funkcja point(...) generuje zatem (pseudolosowo) m

(niekoniecznie różnych) punktów w n wymiarowej przestrzeni Euklidesowej, których
współrzędne kartezjańskie zapisywane są do macierzy

[ ][ ]

T m n

w taki sposób, że w każdym

wierszu i-tym tej macierzy mamy n współrzędnych punktu i-tego (

0,1,...,

1

i

m

=

− ). W

przypadku

2

n =

, zapisz do pliku tekstowego t.txt (w dowolnie wybranym, ale istniejącym

katalogu) składowe tablicy T w taki sposób, aby wygodne było sporządzenie wizualizacji
położeń wygenerowanych punktów w wybranym przez siebie programie graficznym (na
przykład: Excel, Mathematica, Maple, CAD, MicroStation itp. itd.).
Przykładowa wizualizacja w Excelu pokazana została poniżej:

Rys. 1. Losowo wygenerowane punkty

background image

4. Zdefiniuj funkcję

void

mesh(

int

** a,

double

** x,

int

m,

int

n,

double

H,

double

L), która

generuje węzły i pręty kratownicy płaskiej (por. rys.2. poniżej). Pręty generowane są na
osnowie regularnej siatki węzłów definiującej m pionowych i n poziomych prostokątnych
modułów, każdy o wysokości

/

H m i długości

/

L n . W każdym module znajduje się

dodatkowo pręt ukośny pokrywający się z przekątną prostokąta.
Całkowita liczba węzłów kratownicy wynosi zatem

(

) (

)

1

1

N

m

n

=

+ ×

+

, a całkowita liczba

prętów kratownicy wynosi

(

)

(

)



1

1

liczba pretow ukosnych

liczba pretow poziomych

liczba pretow pionowych

E

m

n

n

m

m n

=

+ ×

+

+ ×

+

×









. Funkcja

mesh(...) inicjalizuje dwie macierze:

[ ][ ]

2

a E

typu

int

oraz

[ ][ ]

2

x N

typu

double

. W każdym

wierszu i-tym macierzy

2

E

a

×

składowe

[ ][ ]

0

a i

,

[ ][ ]

1

a i

oznaczają kolejno numer globalny

węzła początkowego oraz końcowego pręta i-tego, przy czym (dla ustalenia uwagi)
zakładamy, że zawsze

[ ][ ] [ ][ ]

0

1

a i

a i

<

. Przykładowo, dla kratownicy z rys.2

[ ][ ]

[ ][ ]

26 0

9 ,

26 1

16

a

a

=

=

. W każdym wierszu i-tym macierzy

2

N

x

×

składowe

[ ][ ]

0

x i

,

[ ][ ]

1

x i

oznaczają odpowiednio pierwsza oraz drugą składową kartezjańską węzła i-tego w

globalnym układzie współrzędnych 0XY. Na podstawie macierzy

2

E

a

×

oraz

2

N

x

×

zapisz do

pliku tekstowego XY.txt (w dowolnie wybranym, ale istniejącym katalogu) współrzędne
kartezjańskie początkowych i końcowych węzłów definiujących pręty w taki sposób, aby
wygodne było sporządzenie wizualizacji kratownicy w wybranym przez siebie programie
graficznym (na przykład: Excel, Mathematica, Maple, CAD, MicroStation itp. itd.).

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

L

H

m

n

X , j

Y , i

0

Rys.2. Kratownica 53 prętowa wygenerowana dla

3

m = i

5

n =


Macierze

2

E

a

×

i

2

N

x

×

są podstawowymi strukturami danych używanymi w algorytmach

obliczeń numerycznych statyki oraz dynamiki zarówno statycznie wyznaczalnych jak i
statycznie niewyznaczalnych konstrukcji kratowych.

background image

Wskazówka

Nietrudno zauważyć, że przy przyjętym sposobie numeracji węzłów i prętów, numer l węzła
zależy od numeru „rzędu” i (wzdłuż osi Y) jak i „kolumny” j (wzdłuż osi X) w następujący
sposób

( )

(

)

(

)

,

1

0,1,...,

;

0,1,...,

l

l i j

i

n

j

i

m j

n

=

= ×

+ +

=

=


Przykładowo, zaznaczony na rys.2 węzeł o numerze globalnym 15 leży w rzędzie

2

i = oraz

kolumnie

3

j = , a zatem dla przyjętej liczby kolumn równej

1 5 1 6

n + = + = mamy faktycznie

( )

(

)

,

1

2 6 3 15

l

l i j

i

n

j

=

= ×

+ + = × + =

.


Wykorzystując powyższą regułę numeracji, obliczanie składowych macierzy alokacji

2

E

a

×

można w bardzo prosty sposób oprogramować w oparciu o poniższy rysunek

i

i+1

j

j+1

i (n + 1) + j

i (n + 1) + j + 1

(i + 1)(n + 1) + j

(i + 1)(n + 1) + j + 1

Rys.3. Numeracja węzłów zależna od numeracji współrzędnych dyskretnych i, j .


W celu inicjalizacji macierzy

2

N

x

×

najprościej jest oczywiście założyć, że układ

współrzędnych kartezjańskich 0XY ma początek w lewym dolnym wierzchołku kratownicy.


Wyszukiwarka

Podobne podstrony:
Inf Lab06
infa Inf Lab06
Inf Lab06
infa, Inf Lab06
Inf Lab06
INF dec5
BEZPIECZE STWO SYSTEM W INF
Sys Inf 03 Manning w 06
Sys Inf 03 Manning w 19
A dane,inf,wiedza,uj dyn stat proc inf w zarz 2008 9
Sys Inf 03 Manning w 02
INF 6 PRZESTEPSTWA
H Bankowość ele platnosci ele proc inf w zzarz 2008 9
Inf przestrz wekt uklady rown
10Swykl nadwr inf transpl
DIAGNOZOWANIE NIESPRAWNOSCI INF Nieznany
1 Ogolne inf o projektowaniui Nieznany (2)
admin sieci inf
ZAPROSZENIE, Documents, IP Zielona gora, mat inf

więcej podobnych podstron