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: