Programming-C

Tasks studies - laboratory

View project on GitHub

C

Wybrać jedno z poniższych zadań. Po zakończeniu kolokwium pliki spakować w archiwum .zip i przesłać za pomocą formularza.

3.0

Napisz funkcję genPassword() która przyjmuje 3 parametry: ilośc liter w haśle, ilość cyfr w haśle, ilość znaków specjalnych w haśle.

Tablica ASCII ASCII code 33 = !
ASCII code 34 = "
ASCII code 35 = #
ASCII code 36 = $
ASCII code 37 = %
ASCII code 38 = &
ASCII code 39 = '
ASCII code 40 = (
ASCII code 41 = )
ASCII code 42 = *
ASCII code 43 = +
ASCII code 44 = ,
ASCII code 45 = -
ASCII code 46 = .
ASCII code 47 = /
ASCII code 48 = 0
ASCII code 49 = 1
ASCII code 50 = 2
ASCII code 51 = 3
ASCII code 52 = 4
ASCII code 53 = 5
ASCII code 54 = 6
ASCII code 55 = 7
ASCII code 56 = 8
ASCII code 57 = 9
ASCII code 58 = :
ASCII code 59 = ;
ASCII code 60 = <
ASCII code 61 = =
ASCII code 62 = >
ASCII code 63 = ?
ASCII code 64 = @
ASCII code 65 = A
ASCII code 66 = B
ASCII code 67 = C
ASCII code 68 = D
ASCII code 69 = E
ASCII code 70 = F
ASCII code 71 = G
ASCII code 72 = H
ASCII code 73 = I
ASCII code 74 = J
ASCII code 75 = K
ASCII code 76 = L
ASCII code 77 = M
ASCII code 78 = N
ASCII code 79 = O
ASCII code 80 = P
ASCII code 81 = Q
ASCII code 82 = R
ASCII code 83 = S
ASCII code 84 = T
ASCII code 85 = U
ASCII code 86 = V
ASCII code 87 = W
ASCII code 88 = X
ASCII code 89 = Y
ASCII code 90 = Z
ASCII code 91 = [
ASCII code 92 = \
ASCII code 93 = ]
ASCII code 94 = ^
ASCII code 95 = _
ASCII code 96 = `
ASCII code 97 = a
ASCII code 98 = b
ASCII code 99 = c
ASCII code 100 = d
ASCII code 101 = e
ASCII code 102 = f
ASCII code 103 = g
ASCII code 104 = h
ASCII code 105 = i
ASCII code 106 = j
ASCII code 107 = k
ASCII code 108 = l
ASCII code 109 = m
ASCII code 110 = n
ASCII code 111 = o
ASCII code 112 = p
ASCII code 113 = q
ASCII code 114 = r
ASCII code 115 = s
ASCII code 116 = t
ASCII code 117 = u
ASCII code 118 = v
ASCII code 119 = w
ASCII code 120 = x
ASCII code 121 = y
ASCII code 122 = z
ASCII code 123 = {
ASCII code 124 = |
ASCII code 125 = }
ASCII code 126 = ~

Funkcja wypisuje w konsoli losowo wygenerowane hasło zawierające określoną ilość znaków. np. 3 litery 2 cyfry 1 znak specjalny

A4?yH0

Pozycja liter, cyfr oraz znaków specjalnych jest losowa.

W metodzie main() zaimplementuj menu:

1. Generuj nowe haslo.
2. Wyjście z programu.

Program powinien działać do momentu wybrania opcji wyjście z programu. Po wybraniu opcji Generuj nowe haslo użytkownik pytany jest o ilość liter w haśle, ilość cyfr w haśle oraz ilosć znaków specjalnych. Po wprowadzeniu danych hasło jest wyświetlane w konsoli. Przykładowa sesja:


1. Generuj nowe haslo.
2. Wyjście z programu.
Wybierz opcje: 1
Ile liter: 1
Ile cyfr: 1
Ile znakow specjalnych: 1
z!4

1. Generuj nowe haslo.
2. Wyjście z programu.
Wybierz opcje: 1
Ile liter: 2
Ile cyfr: 0
Ile znakow specjalnych: 2
*a#Z

1. Generuj nowe haslo.
2. Wyjście z programu.
Wybierz opcje: 2

Zakońćzenie działania programu.

4.0

Utwórz program db_macierzodleglosci.

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

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

Napisz funkcję print_matrix() która wypisuje w konsoli zawartość macierzy w następującej postaci:

| 0.00      | 0.10      |
| 1.00      | 4331.10   |
| 2.00      | 42.10     |

Utwórz funkcję euclidDistance() która przyjmuje dwie tablice o dowolnej długości jako parametry funkcji. Funkcja oblicza odległość Euklidesową na podstawie wartości tablic według wzoru:

\[d(p,q)=\sqrt{\sum_{i=1}^{n}\left(q_{i}-p_{i}\right)^2}\]

Utwórz funkcję distnaceMatrix() która oblicza odległości pomiędzy kolejnymi wierszami macierzy przekazanej jako parametr funkcji i wpisuje do nowej macierzy obliczone wartości. np. mając macierz:

| 0.00      | 0.00      |
| 0.00      | 1.00      |
| 0.00      | 2.00      |

wynikiem działania będzie macierz 3x3 gdzie w komórce [1,1] jest odległośc pomiędzy 1 a 1 wierszem,w komórce [1,2] odległość pomiędzy 1 a 2 wierszem, w komórce … w komórce [3,3] odległośc pomiędzy 3 a 3 wierszem:

| 0.00      | 1.00      | 2.00      |
| 1.00      | 0.00      | 1.00      |
| 2.00      | 1.00      | 0.00      |

W metodzie main() utwórz następujące menu:

1. Wprowadz macierz
2. Wyswietl macierz
3. Macierz odleglosci
4. Wyjscie

Po wybraniu opcji 1 program pyta użytkownika o rozmiar macierzy, alokuje miejsce na tę macierz a następnie użytkownik wypełnia macierz danymi.

Wybrano 1 - Wprowadz macierz.
Wprowadz liczbe wierszy: 2
Wprowadz luczbe kolumn: 2
tab[1][1] = 1
tab[1][2] = 3
tab[2][1] = 3
tab[2][2] = 2

Po wybraniu opcji 2 program wyświetla macierz za pomocą funkcji print_matrix()

Po wybraniu opcji 3 program wyświetla macierz odległości macierzy przechowywanej aktualnie w pamięci.

Program powinien działać aż do momentu wybrania opcji wyjście. Pamięć powinna być zwalniana w odpowiednim momencie.

5.0

Utwóz program bdb_TicTacToe

  1. Utwórz strukturę Array przechowującą dynamicznie alokowaną kwadratową macierz przechowującą znaki. Struktura powinna zawierać dane o wielkości macierzy.

  2. 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. Domyślnie macierz jest wypełniona wartościami \0.

  3. Utwórz funkcję freeArray() która przyjmuje jako parametr wskaźnik do struktury Array. Funkcja dealokuje miejsce przechowujące dynamicznie przydzielone miejsce na macierz. Jeśli wszystko przebiegnie pomyślnie funkcja zwraca wartość true.

  4. Utwórz funkcję makeMove() która przyjmuje jako parametr strukturę Array numer wiersza, numer kolumny oraz symbol gracza. Jeśli ruch jest poprawny(nie przekraczamy zakresu tablicy oraz pole jest wolne - zawiera symbol \0) funkcja wpisuje symbol w odpowiednie miejsce i zwraca 1. W przeciwnym wypadku funkcja zwraca -1. Jesli tablica jest cała zapełniona funkcja zwraca 2(remis)

  5. Utwórz funkcję printArray() która przyjmuje jako parametr strukturę Array. Funkcja wypisuje zawartość macierzy w następującym formacie:

X O X X
X X   X
X     X
      O
  1. Utwórz funkcję checkBoard() przyjmującą instancje struktury Array. W ciele funkcji zaimplementuj sprawdzenie czy jeden z graczy wypełnił wiersz, kolumnę lub przekątną swoim symbolem. Jeśli tak funkcja zwraca ten symbol.

  2. W metodzie main()utwórz menu w którym użytkownik jest pytany o:

    • wielkość planszy
    • liczbę graczy, następnie każdy z graczy wybiera swój symbol. Gra toczy się do momentu jesli jeden z graczy zapełni wiersz, kolumnę,przekątną lub kończy remisem jeśli niemożliwe jest wykonanie ruchu.

Przykładowa sesja:

Podaj wielkosc planszy: 2
Podaj ilosc graczy: 2
Podaj symbol Gracz 1: X
Podaj symbol Gracz 2: X
Symbol zajęty, Podaj symbol Gracz 2: O
===========================================
   
   
===========================================
Ruch gracza X
Podaj numer wiersza i kolumny(np. 1 1): 1 1
===========================================
X  
   
===========================================
Ruch gracza O
Podaj numer wiersza i kolumny(np. 1 1): 2 1
===========================================
X  
O  
===========================================
Ruch gracza X
Podaj numer wiersza i kolumny(np. 1 1): 1 2
===========================================
X X 
O  
===========================================
Wygrywa Gracz X!!!

Koniec programu