Kolokwium 2
Wybrać jedno z poniższych zadań. Pliki z rozwiązaniami nazwać w zależności od wybranego zadania, odpowiednio:
zad1.c
izad1.exe
dla oceny 5zad2.c
izad2.exe
. dla oceny 4zad3.c
izad3.exe
dla oceny 3 Po zakończeniu kolokwium pliki spakować w archiwum .zip i przesłać za pomocą formularza.
Bardzo dobry
EK_3
Utwórz strukturę Array
przechowującą macierz o dowolnym rozmiarze. Struktura powinna zawierać dane niezbędne do iteracji po komórkach macierzy.
Utwórz funkcję initArray()
która zwraca instancję struktury Array
. Funkcja tworzy nową instancję struktury Array
i przechowuje macierz o określonej liczbie wierszy i kolumn przekazanych jako parametry funkcji. Miejsce w pamięci na przechowywanie macierzy jest alokowane dynamicznie.
Utwórz funkcję detArray()
przyjmującą instancje struktury Array
. Funkcja powinna zwracać liczbę obliczoną w następujący sposób:
Przekształcenie macierzy do uzyskania postaci górnej trójkątnej według wzoru: \(A_{jk} = A_{jk} - \frac{A_{ji}}{A_{ii}} * A_{ik}\)
- jeśli w podanym wzorze A[i,i] == 0 (dzielenie przez 0) wypisz stosowny komunikat i przerwij obliczenia zwracając macierz wypełnioną jedną wartością 0.
Poszczególne indeksy zmieniają się według sekwencji:
- i = 1,…,n-1
- j = i+1,…,n
- k = i+1,…,n
Po przekształceniu możliwe jest obliczenie wartości mnożąc elementy na przekątnej. Poniżej liczbą 1 zaznaczono elementy z których trzeba policzyć iloczyn w przypadku macierzy 4x4.
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
Funkcja powinna zwracać odpowiednie komunikaty jeśli macierz jest inna niż kwadratowa.
Utwórz funkcję printArray()
która przyjmuje jako parametr strukturę Array
.
Funkcja wypisuje zawartość tablicy z przekazanej struktury w następującym formacie(kolumny podpisane kolejnymi literami alfabetu):
A B C
2.00 2.00 2.00
2.00 2.00 2.00
12.00 12.00 12.00
W metodzie main()
:
- Za pomocą funkcji
initArray()
utwórz zmienne przechowujące macierze o wymiarach 3x3, 3x3 i 2x4 - Wypełnij macierze następującymi danymi:
A B C 1.00 2.00 3.00 4.00 5.00 5.00 1.00 2.00 4.00
A B C
1.00 2.00 3.00
1.00 2.00 2.00
1.00 2.00 3.00
A B C D
1.00 2.00 3.00 5.00
4.00 5.00 5.00 1.00
Sprawdź działanie funkcji detArray() na powyższych przykładach.
EK_4
Zmodyfikuj program w ten sposób aby wyniki działania programu wyświetlone w konsoli zostały również zapisane w pliku wyniki.txt.
A B C
1.00 2.00 3.00
4.00 5.00 5.00
1.00 2.00 4.00
det = -3.00
A B C
1.00 2.00 3.00
1.00 2.00 2.00
1.00 2.00 3.00
det = 0.00
A B C D
1.00 2.00 3.00 5.00
4.00 5.00 5.00 1.00
Obliczenie wyznacznika jest mozliwe dla macierzy kwadratowej
det = 0.00
Dobry
EK_3
Utwórz funkcję allocate_2d_array()
która dynamicznie alokuje miejsce w pamięci na macierz liczb zmiennoprzecinkowych o rozmiarze przekazanym jako parametry funkcji. Funkcja zwraca wskaźnik na tę macierz.
Utwórz funkcję free_2d_array()
która zwalnia miejsce w pamięci macierzy przekazanej jako parametr funkcji.
W komentarzu opisz za co odpowiadają parametry funkcji jeśli ich nazwa tego nie sugeruje.
Utwórz funkcję print_matrix()
która wypisuje w konsoli zawartość macierzy w następującej postaci:
| 0.0000 | 0.1000 |
| 1.0000 | 41.1005 |
| 2.0000 | 42.1000 |
Utwórz funkcję sort_by_column()
która sortuje tablicę przekazaną jako argument funkcji rosnąco według wartości w wybranej kolumnie. Kolumnę według której ma odbyć się sortowanie powinna być przekazana jako arguemtn funkcji. np.
przed sotrowaniem
| 1.0000 | 3.0000 | 5.0000 |
| 3.0000 | 4.0000 | 3.0000 |
| 4.0000 | 7.0000 | 1.0000 |
| 3.0000 | 1.0000 | 3.0000 |
po sortowaniu z wyborem 2 kolumny
| 3.0000 | 1.0000 | 3.0000 |
| 1.0000 | 3.0000 | 5.0000 |
| 3.0000 | 4.0000 | 3.0000 |
| 4.0000 | 7.0000 | 1.0000 |
po sortowaniu z wyborem 1 kolumny
| 1.0000 | 3.0000 | 5.0000 |
| 3.0000 | 4.0000 | 3.0000 |
| 3.0000 | 1.0000 | 3.0000 |
| 4.0000 | 7.0000 | 1.0000 |
Utwórz macierz za pomocą funkcji allocate_2d_array() a następnie wypełnij ją następującymi wartościami
| 1.0000 | 3.0000 | 5.0000 |
| 3.0000 | 4.0000 | 3.0000 |
| 4.0000 | 7.0000 | 1.0000 |
| 3.0000 | 1.0000 | 3.0000 |
Przetestuj działanie funkcji sort_by_column() na następujących przypadkach:
- Posortuj tablicę według pierwszej kolumny a następnie wypisz rezultat.
- Posortuj tablicę według ostatniej kolumny a następnie wypisz rezultat.
EK_4
Zmodyfikuj program tak aby wynik działania programu został zapisany do pliku wyniki.txt
Dostateczny
EK_3
Utwórz funkcję palindrom()
która sprawdzi czy znaki przechowywane w tablicy są palindromem(słowo lub ciąg znaków, który czytany od przodu i od tyłu brzmi tak samo) a następnie zwróci wartość true jeśli są lub false jeśli nie są. Funkcja przyjmuje tablicę dowolnej długości i przy sprawdznaiu pomija puste znaki. np.
[a, b, a, 0\] true
[a, b, b, a] true
[a, b, c, a] false
Utwórz funkcję print_palindrom()
która przyjmuje jako argument tablicę o dowolnym rozmiarze oraz wypisuje zawartość tablicy w poniższym formacie wraz z informacją czy znaki w tablicy tworzą palindrom czy nie.
[a, b, b, a] true
Napisz program który odczytuje od użytkownika znaki z klawiatury a następnie sprawdza czy wpisane przez niego znaki są palindromem. Program powinien odczytywać znaki do momentu wybrania opcji zakończenia wpisywania znaków.
Czy chcesz wpisac znak? 1
podaj znak: a
Czy chcesz wpisac znak? 1
podaj znak: b
Czy chcesz wpisac znak? 1
podaj znak: a
Czy chcesz wpisac znak? 0
[a, b, a] true
EK_4
Zmodyfikuj program tak aby wynik działania programu został zapisany do pliku wyniki.txt. Za każdym razem gdy uruchamiamy program historia jest dołączana na końcu pliku
Czy chcesz wpisac znak? 1
podaj znak: a
Czy chcesz wpisac znak? 1
podaj znak: b
Czy chcesz wpisac znak? 1
podaj znak: a
Czy chcesz wpisac znak? 0
[a, b, a] true