diff --git a/uczelnia/2_semestr/programowanie/laby/kolokwium1.cpp b/uczelnia/2_semestr/programowanie/laby/kolokwium1.cpp new file mode 100644 index 0000000..e69de29 diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad1.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad1.cpp new file mode 100644 index 0000000..07b88e0 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad1.cpp @@ -0,0 +1,10 @@ +// Prześledź krok po kroku poniższy kod. Dla każdej linii zanotuj wartość ptr, *ptr +// (jeśli dostępna) oraz czy pamięć jest zaalokowana. + +int *ptr = nullptr; +ptr = new int(5); +std::cout << *ptr << '\n'; +*ptr = *ptr + 3; +std::cout << *ptr << '\n'; +delete ptr; +ptr = nullptr; diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad10.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad10.cpp new file mode 100644 index 0000000..d8c4152 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad10.cpp @@ -0,0 +1,2 @@ +// Przepisz rozwiązanie zadania 9, używając std::unique_ptr zamiast su +// rowego wskaźnika. Sprawdź, co musisz zmienić i co działa tak samo. diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad2.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad2.cpp new file mode 100644 index 0000000..f09f992 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad2.cpp @@ -0,0 +1,9 @@ +// Poniższy kod zawiera kilka błędów. Wskaż każdy z nich i zaproponuj poprawkę + +void funkcja() { + int *a = new int(10); + int *b = new int(20); + a = b; // (1) + delete a; // (2) + delete b; // (3) +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad3.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad3.cpp new file mode 100644 index 0000000..7b647bc --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad3.cpp @@ -0,0 +1,3 @@ +// Napisz program, który wczytuje od użytkownika liczbę n, alokuje tablicę n lic +// b całkowitych na stercie, wczytuje n wartości, oblicza i wypisuje ich +// sumę, a następnie poprawnie zwalnia pamięć. diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad4.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad4.cpp new file mode 100644 index 0000000..784e7c8 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad4.cpp @@ -0,0 +1,7 @@ +// Napisz funkcję o poniższej sygnaturze. Zaalokuj tablicę, wypełnij ją kole +// nymi wielokrotnościami +// wartości krok i zwróć wskaźnik. Pamiętaj, że wywołujący jest odpowiedzialny za del +// te[]. + +int *generujTableau(int n, int krok); +// Przykład: generujTableau(5, 3) zwraca {0, 3, 6, 9, 12} diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad5.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad5.cpp new file mode 100644 index 0000000..1d1903e --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad5.cpp @@ -0,0 +1,11 @@ +// Uzupełnij program i sprawdź zachowanie. Wyjaśnij, dlaczego wyniki mogą się różn +// ić. + +void podwojWartoscia(int x) { x *= 2; } +void podwojWskaznikiem(int *p) { *p *= 2; } +int *q = new int(5); +podwojWartoscia(*q); +std::cout << *q << '\n'; // co zostanie wypisane? +podwojWskaznikiem(q); +std::cout << *q << '\n'; // co zostanie wypisane? +delete q; diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad6.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad6.cpp new file mode 100644 index 0000000..fc495d6 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad6.cpp @@ -0,0 +1,9 @@ +// Poniższy fragment ma błąd logiczny i błąd zarządzania pamięcią. Zidentyfikuj oba i n +// apisz poprawną wersję. + +int *stworzTablice(int n) { + int tab[n]; // (1) — co jest nie tak? + for (int i = 0; i < n; i++) + tab[i] = i; + return tab; // (2) — co jest nie tak? +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad7.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad7.cpp new file mode 100644 index 0000000..7624cf1 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad7.cpp @@ -0,0 +1,9 @@ +// Przepisz poniższy kod, zastępując ręczną alokację obiektem unique_ptr. +// Upewnij się, że nie musisz pisać delete. + +// Wersja z surowym wskaźnikiem: +double *wynik = new double(3.14); +std::cout << *wynik << '\n'; +delete wynik; +// Twoja wersja z unique_ptr: +// ... diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad8.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad8.cpp new file mode 100644 index 0000000..1d4d66f --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad8.cpp @@ -0,0 +1,16 @@ +// Prześledź poniższy kod. Przed każdym std::cout przewidź wartość use_count(), a nast +// pnie uruchom program i porównaj + +#include +#include +int main() { + auto a = std::make_shared(42); + std::cout << a.use_count() << '\n'; // ? + { + auto b = a; + std::cout << a.use_count() << '\n'; // ? + auto c = a; + std::cout << a.use_count() << '\n'; // ? + } + std::cout << a.use_count() << '\n'; // ? +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad9.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad9.cpp new file mode 100644 index 0000000..ec1474c --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad9.cpp @@ -0,0 +1,9 @@ +// Napisz program, który: +// • pyta użytkownika o liczbę ocen n +// • dynamicznie alokuje tablicę n liczb double +// • wczytuje oceny od użytkownika +// • oblicza i wypisuje średnią, ocenę minimalną i maksymalną +// • wypisuje informację, czy student zaliczył (średnia >= 3.0) +// • poprawnie zwalnia pamięć +// Użyj funkcji pomocniczych: obliczSrednia(double* tab, int n), +// znajdzMin(double* tab, int n), znajdzMax(double* tab, int n). diff --git a/uczelnia/2_semestr/techniki_cyfrowe/Technika cyfrowa.md b/uczelnia/2_semestr/techniki_cyfrowe/Technika cyfrowa.md index 87307ee..2cbf2e6 100644 --- a/uczelnia/2_semestr/techniki_cyfrowe/Technika cyfrowa.md +++ b/uczelnia/2_semestr/techniki_cyfrowe/Technika cyfrowa.md @@ -10,4 +10,6 @@ Postać standardowa funkcji boolowskiej może być sumacyjna lub iloczynowa, mog Nudy gówno tralalalalalal -rlc sratata \ No newline at end of file +rlc sratata + +Czas propagacji na wykresie czasu to przesunięcie zielonej linii. \ No newline at end of file