diff --git a/uczelnia/2_semestr/matematyka_dyskretna/rekurencja.md b/uczelnia/2_semestr/matematyka_dyskretna/rekurencja.md new file mode 100644 index 0000000..cc0e854 --- /dev/null +++ b/uczelnia/2_semestr/matematyka_dyskretna/rekurencja.md @@ -0,0 +1,15 @@ +Funkcje rekurencyjne są trudne i często nierozwiązywalne. + +Równania liniowe jednorodne. + +Funkcja afiniczna nie jest liniowa. + + + +$$ +\begin{align} +a_{n + 1} &= 4 \cdot a_n \\ +a_{a} &= 1 \\ +a_{i} &= 0 \\ +\end{align} +$$ diff --git a/uczelnia/2_semestr/matematyka_stosowana/laby/lab_12.R b/uczelnia/2_semestr/matematyka_stosowana/laby/lab_12.R new file mode 100644 index 0000000..9529284 --- /dev/null +++ b/uczelnia/2_semestr/matematyka_stosowana/laby/lab_12.R @@ -0,0 +1,128 @@ +# zadanie 1 +# a) + +# dwie zmienne mierzalne +x = c(150, 300, 450, 600, 750, 900, 1200, 1500, 1800) # wysokość nad poziomem morza w metrach, zmienna niezależna +y = c(27.2, 26.0, 24.2, 22.5, 21.7, 20.5, 19.0, 17.4, 16) # temperatura powietrza w stopniach celcjusza, zmienna zależna + +plot(x, y) # wykres punktów empirycznych + +lm(y ~ x) # oszacowanie liniowej funkcji regresji +# 27.322424 -0.006719 +# oszacowana funkcja regresji ma: y = -0.006719x + 27.322424 + +# interpretacja współczynnika regresji: współczynnik regresji równy -0.007 oznacza, że ze wzrostem wysokości nad poziomem morza o jeden metr spada temperatura powietrza średnio o około 0.007 stopnia celcjusza. + +abline(lm(y ~ x)) # wykres oszacowanej funkcji regresji + +# b) +# istotność współczynnika regresji +# hipotezy: +# h0: ϐ1 = 0 +# h1: ~h0 + +summary(lm(y ~ x)) +# Estimate Std. Error t value Pr(>|t|) +# wyraz wolny: (Intercept) 27.3224242 0.4507429 60.62 8.73e-11 *** +# dla x: x -0.0067192 0.0004513 -14.89 1.48e-06 *** + +# t = -14.89 +# p-value = 1.48e-06 +# alpha = 0.03 +# odrzucamy h0 +# Wniosek: Współczynnik regresji między wysokością nad poziomem morza, a temperaturą jest istotnie różny od zera. + +# (na kolokwium tylko współczynnik regresji, interpretacja, test) + +# zadanie 2 +# dwie cechy mierzalne + +#a) oszacować współczynnik koleracji i jego interpretacje + +cor(Ankieta.K$Waga, Ankieta.K$Wzrost) +# 0.6351466 +# Intepretacja współczynnika korelacji: Pomiędzy wagą i wzrostem studentek w badanej grupie istnieje umiarkowana korelacja dodatnia czyli im wyższa osoba tym średnio biorąc większa waga. + +# umiarkowana, w tym samym kierunku + +# r=0 brak korelacji +# 0<|r|<0.2 bardzo słaba +# 0.2<=|r|<0.4 słaba +# 0.4<=|r|<0.7 umiarkowana +# 0.7<=|r|<0.9 silna +# 0.9<=|r|<1 bardzo silna +# |r|=1 doskonała liniowa +# r > 0 cechy zmieniają się w tym samym kierunku +# r < 0 cechy zmieniają się w przeciwnych kierunkach + +# b) przedział ufności dla współczynnika korelacji dla populacji ϱ + +cor.test(Ankieta.K$Waga, Ankieta.K$Wzrost, conf.level = 0.95) +# 0.009199008 0.903470512 + +# Przedział liczbowy od (0.009; 0.903) z prawdopodobieństwem 0.95 obejmuje nieznany współczynnik korelacji między wagą i wzrostem populacji studentek I roku WI ZUT w Szczecinie. + + +# c) test istotności współczynnika korelacji +# hioptezy: +# h0: ϱ = 0 +# h1: ϱ > 0 + + +cor.test(Ankieta.K$Waga, Ankieta.K$Wzrost, alternative = 'g') +# t = 2.3258, df = 8, p-value = 0.02424 +# alpha = 0.05 + +# Odrzucamy h0 + +# Wniosek: Przy poziomie istotności 0.05 odrzucamy h0, zatem współczynnik korelacji jest istotnie większy od 0. + + +# Zadanie 3 +# dwie cechy niemierzalne +# alpha = 0.01 + +# hipotezy: +# h0: X, Y są niezależne | zawsze niezależność +# h1: X, Y są zależne + + +chisq.test(cbind(c(152, 52), c(8, 188))) +# X-squared = 203.67, df = 1, p-value < 2.2e-16 +# odrzucamy h0 i przyjmujemy h1 + +# Wniosek: na poziomie istotności 0.01, zatem można potwierdzić przypuszczenie, że wielkość cebulki wpływa na pojawienie się pędu kwiatostanowego. + +# zad 5 c i d | dwie zmienne mierzalne +# wielkość produkcji niezależna +# liczba braków zależna +x = c(0.8, 1.2, 1.6, 1.8, 2.2, 1.6, 2.4, 2.0) # wielkość produkcji w tys. sztuk +y = c(6, 10, 12, 15, 18, 15, 20, 16) # liczba braków + +# c) +plot(x, y) +regresja = lm(y ~ x) +# -0.3438 8.4375 +# y = 8.4375x - 0.3438 +abline(regresja) + +# Interpretacja: współczynnik regresji równy 8.4375 oznacza, że wzrostem liczby wielkości produkcji o 1 tys. zwiększa się liczba braków o około 8 sztuk. + + +# d) +# istotność współczynnika regresji +# hipotezy: +# h0: beta1 = 0 +# h1: ~h0 +summary(regresja) +# t = 12.425 +# p-value = 1.66e-05 +# alpha = 0.01 + +# alpha > p-value, odrzucamy h0 + +# Wniosek: Współczynnik korelacji między wielkością produkcji, a liczbą braków jest istotnie różny od 0. + + + + \ No newline at end of file diff --git a/uczelnia/2_semestr/programowanie/laby/kolokwium3.cpp b/uczelnia/2_semestr/programowanie/laby/kolokwium3.cpp new file mode 100644 index 0000000..4ad7cd8 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/kolokwium3.cpp @@ -0,0 +1,233 @@ +#include +#include +#include +#include +#include +#include +#include + +class Wydawnictwo { + std::string nazwa, miasto; + +public: + Wydawnictwo(std::string nazwa, std::string miasto) + : nazwa(nazwa), miasto(miasto) {} + + friend std::ostream &operator<<(std::ostream &os, Wydawnictwo &p) { + os << "Wydawnictwo o nazwie: " << p.nazwa << ", pochodzi z miasta " + << p.miasto; + return os; + } +}; + +class Pozycja { +protected: + std::string tytul; + double cena; + int liczba_egzamplarzy; + Wydawnictwo wydawnictwo; + +public: + Pozycja(std::string tytul, double cena, int liczba_egzamplarzy, + Wydawnictwo wydawnictwo) + : tytul(tytul), cena(cena), liczba_egzamplarzy(liczba_egzamplarzy), + wydawnictwo(wydawnictwo) {} + virtual ~Pozycja() = default; + + double wartosc() { return liczba_egzamplarzy * cena; } + void zmienCene(double nowaCena) { cena = nowaCena; } + std::string getTytul() const { return tytul; } + virtual std::string kategoria() = 0; + virtual void wypisz() { + std::cout << "Pozycja pt. " << tytul << " kosztuje" << cena + << "\nAktualnie jest " << liczba_egzamplarzy << " takich pozycji." + << "\nWydawnictwo to: " << wydawnictwo; + } + virtual double cenaKoncowa() const = 0; + + friend std::ostream &operator<<(std::ostream &os, Pozycja &p) { + os << "Tytuł: " << p.tytul << " kosztuje " << p.cenaKoncowa() + << " i jest kategorii " << p.kategoria() << '\n' + << "Aktualnie jest " << p.liczba_egzamplarzy << " tej pozycji"; + return os; + } +}; + +class Ksiazka : public Pozycja { + int liczbaStron; + +public: + Ksiazka(std::string tytul, double cena, int liczba_egzamplarzy, + Wydawnictwo wydawnictwo, int liczbaStron) + : Pozycja(tytul, cena, liczba_egzamplarzy, wydawnictwo), + liczbaStron(liczbaStron) {} + ~Ksiazka() {} + + std::string kategoria() override { return "ksiazka"; } + + double cenaKoncowa() const override { + if (liczbaStron < 100) { + return cena - cena * 0.1; + } + return cena; + } + + void wypisz() override { + wypisz(); + std::cout << "\nLiczba stron wynosi" << liczbaStron << '\n'; + } + + Ksiazka operator+(Ksiazka &p1) { + Ksiazka nowa_pozycja = + Ksiazka(tytul, cena, liczba_egzamplarzy + p1.liczba_egzamplarzy, + wydawnictwo, liczbaStron); + return nowa_pozycja; + }; +}; + +class Czasopismo : public Pozycja { + int numerWydania; + +public: + Czasopismo(std::string tytul, double cena, int liczba_egzamplarzy, + Wydawnictwo wydawnictwo, int numerWydania) + : Pozycja(tytul, cena, liczba_egzamplarzy, wydawnictwo), + numerWydania(numerWydania) {} + + ~Czasopismo() {} + + std::string kategoria() override { return "czasopismo"; } + + double cenaKoncowa() const override { + if (numerWydania < 12) { + return cena - cena * 0.2; + } + return cena; + } + + void wypisz() override { + wypisz(); + std::cout << "\nNumer wydania to: " << numerWydania << '\n'; + } + + Czasopismo operator+(Czasopismo &p1) { + Czasopismo nowa_pozycja = + Czasopismo(tytul, cena, liczba_egzamplarzy + p1.liczba_egzamplarzy, + wydawnictwo, numerWydania); + return nowa_pozycja; + }; +}; + +class Biblioteka { + std::vector> pozycje; + int size; + static int biblioteka_ammount; + +public: + Biblioteka(int size) : size(size) { + pozycje.reserve(size); + biblioteka_ammount++; + } + ~Biblioteka() {} // nie musimy ręcznie zwalniać pamięci ponieważ unique_ptr sam + // się zwalnia, gdy jego właściciel umiera + void dodajPozycje(std::unique_ptr p) { + pozycje.push_back(std::move(p)); + } + + Pozycja *znajdzPozycje(const std::string &tytul) const { + for (auto &p : pozycje) { + if (p->getTytul() == tytul) { + return p.get(); + } + } + return nullptr; + } + + Pozycja &operator[](int index) { + if (index < 0 || index >> size) { + throw std::out_of_range( + "Index nie może być mniejszy niż zero lub większy niż rozmiar"); + } + Pozycja *p = pozycje[index].get(); + return *p; + } + + void sortujWgCeny() { std::sort(pozycje.begin(), pozycje.end()); } + + void wypiszWszystkie() const { + for (auto &p : pozycje) { + p->wypisz(); + } + } + + double obliczWartoscBiblioteki() const { + double sum = 0; + for (auto &p : pozycje) { + sum += p->wartosc(); + } + return sum; + } + + int ilePozycjiKategorii(const std::string &kat) { + int sum = 0; + for (auto &p : pozycje) { + if (p->kategoria() == kat) { + sum++; + } + } + return sum; + } + + static int ileBibliotek() { return biblioteka_ammount; } +}; + +int Biblioteka::biblioteka_ammount = 0; + +int main() { + Biblioteka biblioteka = Biblioteka(10); + + Wydawnictwo w1 = Wydawnictwo("Nowa Era", "Szczecin"); + Wydawnictwo w2 = Wydawnictwo("Stara Era", "Warszawa"); + + biblioteka.dodajPozycje( + std::make_unique("Ogniem i Mieczem", 12, 10, w1, 360)); + + biblioteka.dodajPozycje( + std::make_unique("Telenowele", 2, 1, w2, 3)); + + Pozycja *znalezionaPozycja = biblioteka.znajdzPozycje("Ogniem i Mieczem"); + if (!znalezionaPozycja) { + std::cout << "Nie znaleziono pozycji!!!\n"; + return 1; + } + + std::cout << "Przed zmianą ceny: " << *znalezionaPozycja << std::endl; + znalezionaPozycja->zmienCene(123); + std::cout << "Po zmianie ceny: " << *znalezionaPozycja << std::endl; + + Pozycja *znalezionaPozycja2 = biblioteka.znajdzPozycje("Telenowele"); + if (!znalezionaPozycja) { + std::cout << "Nie znaleziono pozycji 2!!!\n"; + return 1; + } + + Ksiazka k1 = Ksiazka("Trala", 23, 12, w1, 1); + Ksiazka k2 = Ksiazka("Tra", 1, 1, w1, 1); + std::cout << "\n=== Dodawanie ===\n"; + Ksiazka k3 = k1 + k2; + std::cout << k1 << std::endl; + std::cout << k2 << std::endl; + std::cout << k3 << std::endl; + std::cout << "\n=== Wyświetlanie ===\n"; + std::cout << "Zerowy element biblioteki: " << biblioteka[0] << std::endl; + std::cout << "Biblioteka jest warta " << biblioteka.obliczWartoscBiblioteki() + << std::endl; + std::cout << "Aktualnie jest " << biblioteka.ilePozycjiKategorii("ksiazka") + << " książek" << std::endl; + std::cout << "Aktualnie jest " << biblioteka.ileBibliotek() << " bibliotek" + << std::endl; + std::cout << "\n=== Sortowanie ===\n"; + // biblioteka.wypiszWszystkie(); + biblioteka.sortujWgCeny(); + // biblioteka.wypiszWszystkie(); +} diff --git a/uczelnia/2_semestr/programowanie/laby/kolokwium3_probne_2.cpp b/uczelnia/2_semestr/programowanie/laby/kolokwium3_probne_2.cpp new file mode 100644 index 0000000..51d79eb --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/kolokwium3_probne_2.cpp @@ -0,0 +1,110 @@ +#include +#include +#include +#include +#include +#include + +class Producent { + std::string nazwa; + std::string kraj; + +public: + Producent(std::string nazwa, std::string kraj) : nazwa(nazwa), kraj(kraj) {} + + friend std::ostream &operator<<(std::ostream &os, const Producent p) { + os << "Nazwa: " << p.nazwa << " pochodzi z kraju: " << p.kraj; + return os; + } +}; + +class Towar { +protected: + std::string nazwa; + double cena; + int sztuki; + Producent producent; + +public: + Towar(std::string nazwa, double cena, int sztuki, Producent producent) + : nazwa(nazwa), cena(cena), sztuki(sztuki), producent(producent) {} + virtual ~Towar() = default; + + double wartosc() const { return cena * sztuki; } + + void zmienCene(double nowaCena) { cena = nowaCena; } + + virtual std::string kategoria() = 0; + + virtual void wypisz() const { + std::cout << "Nazwa: " << nazwa << " kosztuje " << cena + << ". Aktualnie jest " << sztuki << " sztuk. Producent to " + << producent << std::endl; + } + + virtual double cenaKoncowa() const = 0; + + int operator+(Towar &t) { return sztuki + t.sztuki; } + + friend std::ostream &operator<<(std::ostream &os, Towar &t) { + os << "Nazwa: " << t.nazwa << " kosztuje " << t.cenaKoncowa() + << ". Aktualnie jest " << t.sztuki << " sztuk. Producent to " + << t.producent; + return os; + } +}; + +class TowarSpozywczy : public Towar { + std::string terminWaznosci; + +public: + TowarSpozywczy(std::string nazwa, double cena, int sztuki, + Producent producent, std::string terminWaznosci) + : Towar(nazwa, cena, sztuki, producent), terminWaznosci(terminWaznosci) {} + + std::string kategoria() override { return "spozywczy"; } + double cenaKoncowa() const override { + int rabat = 5; + return wartosc() - rabat; + } + + void wypisz() const override { + wypisz(); + std::cout << "Termin ważności jest do " << terminWaznosci << std::endl; + } +}; + +class TowarElektroniczny : public Towar { + int gwarancjaMiesiace; + +public: + TowarElektroniczny(std::string nazwa, double cena, int sztuki, + Producent producent, int gwarancjaMiesiace) + : Towar(nazwa, cena, sztuki, producent), + gwarancjaMiesiace(gwarancjaMiesiace) {} + + std::string kategoria() override { return "spozywczy"; } + double cenaKoncowa() const override { + int koszt_gwarancji = 10; + return wartosc() + koszt_gwarancji; + } + + void wypisz() const override { + wypisz(); + std::cout << "Gwarancja trwa" << gwarancjaMiesiace << " miesięcy." + << std::endl; + } +}; + +class Sklep { + std::vector> towary; + int max; + int current; + + static int liczba_sklepow; + +public: + Sklep(int max) : max(max), current(0) { towary.reserve(max); } +}; + +int Sklep::liczba_sklepow = 0; diff --git a/uczelnia/2_semestr/programowanie/laby/lab12/zad1.cpp b/uczelnia/2_semestr/programowanie/laby/lab12/zad1.cpp index 49f6389..ff5a195 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab12/zad1.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab12/zad1.cpp @@ -3,7 +3,7 @@ template T potroj(T x) { return x * 3; } int main() { - std::cout << potroj(7) << '\n'; - std::cout << potroj(2.5) << '\n'; - std::cout << potroj('A') << '\n'; + std::cout << potroj(7) << '\n'; // 21 + std::cout << potroj(2.5) << '\n'; // 7.5 + std::cout << potroj('A') << '\n'; // dziwny znak } diff --git a/uczelnia/2_semestr/programowanie/laby/lab12/zad8.cpp b/uczelnia/2_semestr/programowanie/laby/lab12/zad8.cpp index 6c6b929..3877860 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab12/zad8.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab12/zad8.cpp @@ -5,6 +5,7 @@ podwoj(2, 3); // funkcja przyjmuje jeden argument a jest wywołana z dwoma // Fragment B template T iloczyn(T a, T b); // definicja w innym pliku .cpp - kod się nie linkuje +// należy dodać #include "nazwa_pliku.cpp" // Fragment C template T wiekszy(T a, T b) { return a > b ? a : b; } diff --git a/uczelnia/2_semestr/programowanie/laby/out/kolokwium3 b/uczelnia/2_semestr/programowanie/laby/out/kolokwium3 new file mode 100755 index 0000000..9b56a2b Binary files /dev/null and b/uczelnia/2_semestr/programowanie/laby/out/kolokwium3 differ