Języki i Paradygmaty Programowania 1, laboratorium 08 Zadanie 1

Transkrypt

Języki i Paradygmaty Programowania 1, laboratorium 08 Zadanie 1
Języki i Paradygmaty Programowania 1, laboratorium 08
Zadanie 1 Stwórz strukturę przechowującą informacje o pikselu: kolor w każdym z trzech kanałów
R – czerwony, G – zielony oraz B – niebieski. Każdy kanał powinien być przechowywany jako
jeden bajt (unsigned char).
Stwórz strukturę przechowującą informację o rysunku: jego wymiary oraz tablicę pikseli (wskaźnik
na strukturę piksela).
Stwórz funkcję zwracającą wskaźnik na strukturę rysunku, tworzącą rysunek o wymiarach
podanych jako argumenty: w szerokość i h wysokość, oraz alokującą tablicę pikseli rysunku o
wymiarach w*h.
Napisz funkcję ustawiającą kanały podanego piksela na wartości przesłane jako argumenty.
Napisz funkcję zapisującą rysunek do pliku .raw – wpisz do pliku całą tablicę pikseli jako dane
binarne:
fwrite(image, sizeof(struct Pixel), w*h, fp);
Tak utworzony rysunek może zostać otwarty np. w programie IrfanView (instrukcje do zdobycia u
prowadzącego).
struct Pixel {...};
struct Image {...};
struct Image* imageCreate(int w, int h) {...}
void imageSetPixel(struct Image* img, int x, int y, ...) {...}
void imageSave(struct Image* img, const char *path) {...}
Zadanie 2. Stwórz listę jednokierunkową przechowującą listę imion. Struktura powinna składać się
ze wskaźnika na następny element oraz wskaźnika na tekst.
Napisz funkcję przyjmującą wskaźnik na pierwszy element listy oraz tekst, dodającą do podanej
listy element przechowujący przesłany tekst. Funkcja powinna zwracać wskaźnik na pierwszy
element listy (wymagane gdy tworzona jest nowa lista).
Napisz funkcję wypisującą wszystkie imiona przechowywane w liście.
Zadanie 3. Napisz funkcję sortującą listę imion z zadania 2. alfabetycznie. Wykorzystaj algorytm
sortowania bąbelkowego.
Zadanie 4. Napisz funkcję wypisującą imię zapisane w elemencie listy z zadania 2., którego indeks
został przekazany jako argument. Funkcja powinna informację o błędzie, jeśli nie znaleziono
elementu o podanym indeksie (dla indeksów ujemnych lub większych od liczby elementów listy).