Inf Lab09


Informatyka - Podstawy Programowania w Języku C++
prow. SÅ‚awomir Czarnecki
Zadania na laboratorium nr. 9
1. Zapisz do plików tekstowych dane dotyczące odpowiednio:
topologii połączeń prętów (plik A.txt),
geometrii dla l = h =1.5 m (plik Z.txt),
[ ]
obcią\eń dla Q =10.0 kN (plik Q.txt) i
[ ]
warunków podparcia (plik R.txt)
8-prętowej kratownicy statycznie wyznaczalnej przedstawionej na Rys.1.
y
1
2
5
5
Q
4 6
h 0
3
1
2 7 x
3
4
0
l l
l
Rys.1. Kratownica 8-prętowa
Proponuje się następujący schemat  organizacji danych w plikach:
plik: A.txt plik: Z.txt plik: Q.txt
w pierwszym wierszu w pierwszym wierszu w kolejnych wierszach
liczba prętów (równa 8) liczba węzłów (równa 6) wszystkie składowe
a następnie w kolejnych a następnie w kolejnych wektorów obcią\enia
wierszach wszystkie wierszach wszystkie węzłów w układzie 0xy
składowe macierzy składowe kartezjańskie przy czym nieznane
alokacji oddzielone poło\eń węzłów w składowe reakcji
spacją przyjętym układzie 0xy przyjąć równe 0
8 6 0.0 0.0
4 5 1.5 0.0 0.0 0.0
0 5 3.0 1.5 0.0 -10.0
0 4 4.5 1.5 0.0 0.0
0 1 3.0 0.0 0.0 0.0
1 3 0.0 0.0 0.0 0.0
1 2 0.0 1.5
2 3
0 3
plik: R.txt Uwaga ! Przyjmujemy numeracjÄ™ stopni swobody
w pierwszym wierszu ix,iy w kierunku odpowiednio osi x i y w węzle i-tym
liczbę odebranych następująco:
stopni swobody ix = 2Å"i (w kierunku poziomym x)
a nastÄ™pnie w kolejnych iy = 2Å"i +1 (w kierunku pionowym y)
wierszach wszystkie
numery odebranych
stopni swobody
4
7
8
10
11
2. Napisz program w postaci funkcji bezparametrowej
void kratownica(string PATH),
który implementuje, przedstawiony w materiałach, algorytm znajdowania sił w prętach
kratownicy statycznie wyznaczalnej. Kod zapisuj według podanej ni\ej kolejności:
Krok 1. Wczytaj wszystkie dane w oparciu o przygotowane w zadaniu 1 pliki tekstowe: A.txt,
Z.txt, Q.txt, R.txt. Parametr PATH definiuje, zakończoną znakiem  \\ ,ście\kę dostępu do
katalogu, w którym zapisane zostały pliki A.txt, Z.txt, Q.txt, R.txt ( pełne ście\ki dostępu
będą zatem następujące: PATH +  A.txt , PATH +  Z.txt , PATH +  Q.txt , PATH +  R.txt ).
Dane z plików wczytaj do odpowiednio zdefiniowanych dynamicznie macierzy i wektorów
według następującego schematu:
A.txt A " MP × 2 typu int
Z.txt Z " MI × 2 typu double
Q.txt Q " !2I typu double
R.txt R " !S typu int
gdzie P, I, S oznaczają kolejno: liczbę prętów, liczbę węzłów oraz liczbę odebranych stopni
swobody (zapisane w pierwszych wierszach plików odpowiednio: A.txt, Z.txt, R.txt).
Krok 2. Posortuj wektor R .
Krok 3. Zdefiniuj (dynamicznie) macierz geometryczną B " M typu double cosinusów
P × 2I
kierunkowych wszystkich prętów zgodnie z podanym ni\ej algorytmem:
" Przypisz wartość 0 wszystkim składowym macierzy B .
" Dla wszystkich prętów p = 0,1,..., P -1 oblicz kolejno:
i0 = A p 0 , i1 = A p 1
[ ][ ] [ ][ ]
"X = Z i1 0 Z i0 0 , "Y = Z i1 1 Z i0 1
[ ][ ]- [ ][ ] [ ][ ]- [ ][ ]
"X "Y
2 2
L = "X + "Y , Ä… = , ² =
L L
B p 2 i0 = -Ä… , B p 2 i0 +1 = -² , B p 2 i1 = Ä… , B p 2 i1 +1 = ²
[ ][ ] [ ][ ] [ ][ ] [ ][ ]
Krok 4. Zdefiniuj (dynamicznie) macierz E" M2I × P , E = BT (transpozycja macierzy B ).
Krok 5. Zdefiniuj (dynamicznie) macierze En " M , Er " MS × P typu double oraz wektory
P × P
N " !P , Qn " !P , Qr " !S typu double i zainicjalizuj ich składowe według następującego
algorytmu: dla wszystkich kolejnych numerów wierszy macierzy E interpretowanych jako
kolejne stopnie swobody s = 0,1,..., 2 I -1 wykonuj następujące czynności:
" jeśli stopień swobody s-ty jest elementem wektora RS to zapisz wiersz s-ty macierzy
E do pierwszego  wolnego wiersza macierzy Er ,
" w przeciwnym przypadku zapisz wiersz s-ty macierzy E do pierwszego  wolnego
wiersza macierzy En , a składową s-tą wektora Q do pierwszej  wolnej składowej
wektora Qn .
Krok 6. Oblicz siły N w prętach, rozwiązując układ równań En N = Qn .
Krok 7. Oblicz wszystkie składowe reakcji Qr z relacji Qr = Er N .
Krok 8. Zapisz do pliku tekstowego dane, na podstawie których mo\liwe będzie sporządzenie
rysunku schematu połączeń prętów kratownicy w programie Excel (patrz laboratorium 6).
Wydruk ekranu dla danych z p.1:


Wyszukiwarka