Kolokwium 2
Wybrać jedno z poniższych zadań. Pliki z rozwiązaniami nazwać w zależności od wybranego zadania, odpowiednio:
dst_gr4.c
idst.exe
dla oceny 3db_gr4.c
idb.exe
. dla oceny 4bdb_gr4.c
ibdb.exe
dla oceny 5 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. Struktura ma zawierać również dane niezbędne do odczytania wartości komórek 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.
Utwórz funkcję printArray()
która przyjmuje jako parametr strukturę Array
.
Funkcja wypisuje zawartość macierzy w następującym formacie:
2.00 2.00 2.00
2.00 2.00 2.00
12.00 12.00 12.00
Utwórz funkcję multiplyArrays()
przyjmującą dwie instancje struktury Array
. W ciele funkcji zaimplementuj mnożenie macierzy według wzoru:
Uwzględnij nastepujące aspekty:
- kiedy możliwe jest mnożenie macierzy przez macierz, jeśli mnożenie nie jest możliwe wypisz odpowiedni komunikat i zwróć macierz jednoelementową z wartością 0
Array
(dwie macierze można pomnożyć tylko wtedy gdy liczba kolumn macierzy A jest równa liczbie wierszy macierzy B). - funkcja ma zwrócić nową macierz będącą wynikiem mnożenia tych macierzy
W metodzie main()
:
- Za pomocą funkcji
initArray()
utwórz macierze o wymiarach 2x3, 3x2, 3x3 oraz 4x2 z mastępującymi wartościami
1.00 2.00 3.00
4.00 5.00 2.00
1.00 4.00
3.00 1.00
5.00 4.00
1.00 2.00 3.00
4.00 5.00 2.00
4.00 5.00 2.00
1.00 2.00 3.00 4.00
4.00 5.00 2.00 1.00
- Wywołaj funkcję
multiplyArrays()
mnożąc:- macierz 2x3 z 3x2
- macierz 2x3 z 3x3
- macierz 2x3 z 2x4
- Wypisz wynik mnożenia macierzy w konsoli (funkcja
printArray()
)
EK_4
Zmodyfikuj program aby wynik mnożenia macierzy został zapisany w pliku tekstowym wyniki.txt
w postaci:
1.00 2.00 3.00
4.00 5.00 2.00
X
1.00 4.00
3.00 1.00
5.00 4.00
=
22.00 18.00
29.00 29.00
1.00 2.00 3.00
4.00 5.00 2.00
X
1.00 2.00 3.00
4.00 5.00 2.00
4.00 5.00 2.00
=
21.00 27.00 13.00
32.00 43.00 26.00
1.00 2.00 3.00
4.00 5.00 2.00
X
1.00 2.00 3.00 4.00
4.00 5.00 2.00 1.00
=
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 maleją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
| 4.0000 | 7.0000 | 1.0000 |
| 3.0000 | 4.0000 | 3.0000 |
| 1.0000 | 3.0000 | 5.0000 |
| 3.0000 | 1.0000 | 3.0000 |
po sortowaniu z wyborem 1 kolumny
| 4.0000 | 7.0000 | 1.0000 |
| 3.0000 | 1.0000 | 3.0000 |
| 3.0000 | 4.0000 | 3.0000 |
| 1.0000 | 3.0000 | 5.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 z końca tablicy. 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
Przetestuj działanie funkcji print_palindrom()
na następujących tablicach:
[k, a, j, a, k]
[1, 2, 3, 3, 2, 1]
[k, 1, u]
EK_4
Zmodyfikuj program tak aby wynik działania programu został zapisany do pliku wyniki.txt