Strona główna » Kursy » Zadania » Tablice liczb - Zestaw Zadań
 

Tablice liczb - Zestaw Zadań

Wstęp

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.

Zadania

Założenia

  1. Każda funkcja powinna zostać przetestowana
  2. Wszystkie napisane funkcje powinny rzucać wyjątek Niepoprawne dane jeśli wprowadzone dane są nieprawidłowe

Listy 1D

Zadanie 1

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}".

Zadanie 2

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].

Zadanie 3

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.

Zadanie 4

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].

Tablice 2D

Zadanie 5

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:

00.10.2
10.10.2
20.20.04

Funkcja powinna wypisać na konsole:

  1. 0        0.1     0.2
  2. 1        0.1     0.2
  3. 2        0.2     0.04

Zadanie 6

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ę:

11.414212.23607
012
11.414212.23607

Zadanie 7

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ę:

012
112
221