Poniższy zestaw zadań ma za zadanie sprawdzić wiedzę dotyczącą tworzenia, analizy i modyfikowania tablic liczb. Zadanie zostały posortowane względem poziomu trudności. Zadania powinny być wykonywane w przedstawionej kolejności, ponieważ część zadań łączy się z poprzednimi.
Napisz funkcję void wypiszListaItr(const int* dane, const int n), która wypisze liczby na liście dane o długości n wykorzystując technike iteracji. Wypisane wyrażenie powinno być postaci: "{a1, a2, .., an}"
Dopisz funkcję void wypiszListaRek(const int* dane, const int n, int i), która wykona to samo zadanie przy zastosowaniu rekurencji.
Przykładowo lista dane:=[1, 2, 3, 4] powinna wypisać na ekran "{1, 2, 3, 4}".
Napisz funkcję int* laczSasiednieLiczby(const int* dane, const int n), która utworzy nową tablice liczb na podstawie wprowadzonej listy dane:=[a1, a2, .., an] o n elementach. Funkcja powinna zwrócić listę postaci: L:=[a1 + a2, a2 + a3, .., an - 1 + an] o długości n - 1.
Przykładowo dla listy dane:=[1, 2, 3, 4] funkcja powinna zwrócić L:=[3, 5, 7].
Napisz funkcję int szukajIdentycznych(const int* daneA, const int nA, const int* daneB, const int nB), która zwróci ile elementów z listy daneA długości nA występuje na liście daneB długości nB przy założeniu, że żadna lista nie zawiera dwóch takich samych liczb.
Przykładowo dla listy daneA:=[1, 2, 3, 4] i daneB:=[3, 4, 5] funkcja powinna zwrócić 2.
Napisz funkcję int* usunzListyDane(const int* dane, const int n, const int* usun, const int k), która zwróci nową tablicę liczba, która będzie zawierać wszystkie elementy z tablicy dane o długości n, które nie występują w tablicy usun o długości k.
Przykładowo dla listy dane:=[1, 2, 3, 4] i usun:=[3, 4, 5] funkcja powinna zwrócić L:=[1, 2].
Napisz funkcję void wypiszLista2D(double** dane, int w, int h), która wypisze liczby w tablicy dane o szerokości w i wysokości h. Wiersze powinny zostać wypisane w oddzielnych linijkach, a dane z tej samej kolumny powinny znajdować się jedna pod drugą.
Napisz przeciążenie dla tej funkcji, aby można było wypisywać dane z listy 2D, która zawiera liczby całkowitoliczbowe.
Przykładowo dla tabeli:
0 | 0.1 | 0.2 |
1 | 0.1 | 0.2 |
2 | 0.2 | 0.04 |
Funkcja powinna wypisać na konsole:
Napisz funkcję double** odlegloscOdPunktu(const int w, const int h, const int x, const int y), która utworzy dwuwymiarową listę o szerokości w i wysokości h. W każdym polu tabeli powinna zostać wpisana wartość odległości pozycji tego pola (i, j) od pozycji (x, y).
Przykładowo dla odlegloscOdPunktu(3, 3, 0, 1) funkcja powinna zwrócić następującą tabelę:
1 | 1.41421 | 2.23607 |
0 | 1 | 2 |
1 | 1.41421 | 2.23607 |
Napisz funkcję int** tabliczkaMnozeniaModulo(const int z), która utworzy tabliczkę mnożenia w systemie liczb całkowitych, dodatnich modulo z. Oznacza to, że pole a0, i = ai, 0 = i, a każde pozostałe pole ax, y = (a0, x·ay, 0) mod z = (xy) mod z.
Przykładowo dla z = 3 program powinien zwrócić następującą tabelę:
0 | 1 | 2 |
1 | 1 | 2 |
2 | 2 | 1 |