Advertisement
wtgftw

Untitled

Nov 17th, 2023
843
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 9.72 KB | None | 0 0
  1. class Osoba {
  2.     var imie: String
  3.     var nazwisko: String
  4.     var rokUrodzenia: Int
  5.    
  6.     init(imie: String, nazwisko: String, rokUrodzenia: Int) {
  7.         self.imie = imie
  8.         self.nazwisko = nazwisko
  9.         self.rokUrodzenia = rokUrodzenia
  10.     }
  11.    
  12.     func obliczWiek() -> Int {
  13.         let aktualnyRok = 2023 // Możesz użyć funkcji do uzyskania aktualnego roku
  14.         return aktualnyRok - rokUrodzenia
  15.     }
  16.    
  17.     func wyswietlDane() {
  18.         print("Imię: \(imie), Nazwisko: \(nazwisko), Rok urodzenia: \(rokUrodzenia)")
  19.     }
  20. }
  21.  
  22. // Przetestuj utworzone funkcje
  23. let osoba1 = Osoba(imie: "Jan", nazwisko: "Kowalski", rokUrodzenia: 1990)
  24. let osoba2 = Osoba(imie: "Anna", nazwisko: "Nowak", rokUrodzenia: 1995)
  25.  
  26. osoba1.wyswietlDane()
  27. osoba2.wyswietlDane()
  28.  
  29. let wiekOsoby1 = osoba1.obliczWiek()
  30. let wiekOsoby2 = osoba2.obliczWiek()
  31.  
  32. if wiekOsoby1 < wiekOsoby2 {
  33.     print("\(osoba1.imie) jest młodszy/młodsza niż \(osoba2.imie).")
  34. } else if wiekOsoby1 > wiekOsoby2 {
  35.     print("\(osoba1.imie) jest starszy/starsza niż \(osoba2.imie).")
  36. } else {
  37.     print("\(osoba1.imie) i \(osoba2.imie) mają ten sam wiek.")
  38. }
  39.  
  40.  
  41.  
  42.  
  43.  
  44. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  45.  
  46. // Typ wyliczeniowy dla stanowiska
  47. enum Stanowisko: String {
  48.     case programista
  49.     case projektant
  50.     case manager
  51.     // Dodaj inne stanowiska, jeśli są potrzebne
  52. }
  53.  
  54. // Klasa Osoba
  55. class Osoba {
  56.     var imie: String
  57.     var nazwisko: String
  58.     var rokUrodzenia: Int
  59.    
  60.     init(imie: String, nazwisko: String, rokUrodzenia: Int) {
  61.         self.imie = imie
  62.         self.nazwisko = nazwisko
  63.         self.rokUrodzenia = rokUrodzenia
  64.     }
  65.    
  66.     func obliczWiek() -> Int {
  67.         let aktualnyRok = 2023 // Możesz użyć funkcji do uzyskania aktualnego roku
  68.         return aktualnyRok - rokUrodzenia
  69.     }
  70.    
  71.     func wyswietlDane() {
  72.         print("Imię: \(imie), Nazwisko: \(nazwisko), Rok urodzenia: \(rokUrodzenia)")
  73.     }
  74. }
  75.  
  76. // Klasa Pracownik dziedzicząca po klasie Osoba
  77. class Pracownik: Osoba {
  78.     var rokZatrudnienia: Int
  79.     var stanowisko: Stanowisko
  80.     var stawkaZaGodzine: Double
  81.     var liczbaGodzin: Double
  82.     var nazwaFirmy: String
  83.    
  84.     init(imie: String, nazwisko: String, rokUrodzenia: Int, rokZatrudnienia: Int, stanowisko: Stanowisko, stawkaZaGodzine: Double, liczbaGodzin: Double, nazwaFirmy: String) {
  85.         self.rokZatrudnienia = rokZatrudnienia
  86.         self.stanowisko = stanowisko
  87.         self.stawkaZaGodzine = stawkaZaGodzine
  88.         self.liczbaGodzin = liczbaGodzin
  89.         self.nazwaFirmy = nazwaFirmy
  90.        
  91.         // Wywołaj init z klasy Osoba
  92.         super.init(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia)
  93.     }
  94.    
  95.     func liczbaLatPracy() -> Int {
  96.         let aktualnyRok = 2023 // Możesz użyć funkcji do uzyskania aktualnego roku
  97.         return aktualnyRok - rokZatrudnienia
  98.     }
  99.    
  100.     func obliczPensje() -> Double {
  101.         return stawkaZaGodzine * liczbaGodzin
  102.     }
  103.    
  104.     // Nadpisz funkcję wyswietlDane z klasy Osoba
  105.     override func wyswietlDane() {
  106.         super.wyswietlDane()
  107.         print("Rok zatrudnienia: \(rokZatrudnienia)")
  108.         print("Stanowisko: \(stanowisko.rawValue)")
  109.         print("Stawka za godzinę: \(stawkaZaGodzine)")
  110.         print("Liczba godzin: \(liczbaGodzin)")
  111.         print("Nazwa firmy: \(nazwaFirmy)")
  112.     }
  113. }
  114.  
  115. // Przetestuj utworzone funkcje dla dwóch pracowników
  116. let pracownik1 = Pracownik(imie: "Jan", nazwisko: "Kowalski", rokUrodzenia: 1990, rokZatrudnienia: 2015, stanowisko: .programista, stawkaZaGodzine: 50.0, liczbaGodzin: 160.0, nazwaFirmy: "Firma A")
  117. let pracownik2 = Pracownik(imie: "Anna", nazwisko: "Nowak", rokUrodzenia: 1995, rokZatrudnienia: 2018, stanowisko: .projektant, stawkaZaGodzine: 45.0, liczbaGodzin: 140.0, nazwaFirmy: "Firma B")
  118.  
  119. pracownik1.wyswietlDane()
  120. print("Liczba lat pracy: \(pracownik1.liczbaLatPracy())")
  121. print("Pensja: \(pracownik1.obliczPensje())")
  122.  
  123. pracownik2.wyswietlDane()
  124. print("Liczba lat pracy: \(pracownik2.liczbaLatPracy())")
  125. print("Pensja: \(pracownik2.obliczPensje())")
  126.  
  127. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  128.  
  129. // Typ wyliczeniowy dla kierunku studiów
  130. enum KierunekStudiow: String {
  131.     case informatyka
  132.     case matematyka
  133.     case fizyka
  134.     // Dodaj inne kierunki, jeśli są potrzebne
  135. }
  136.  
  137. // Klasa Osoba
  138. class Osoba {
  139.     var imie: String
  140.     var nazwisko: String
  141.     var rokUrodzenia: Int
  142.    
  143.     init(imie: String, nazwisko: String, rokUrodzenia: Int) {
  144.         self.imie = imie
  145.         self.nazwisko = nazwisko
  146.         self.rokUrodzenia = rokUrodzenia
  147.     }
  148.    
  149.     func obliczWiek() -> Int {
  150.         let aktualnyRok = 2023 // Możesz użyć funkcji do uzyskania aktualnego roku
  151.         return aktualnyRok - rokUrodzenia
  152.     }
  153.    
  154.     func wyswietlDane() {
  155.         print("Imię: \(imie), Nazwisko: \(nazwisko), Rok urodzenia: \(rokUrodzenia)")
  156.     }
  157. }
  158.  
  159. // Klasa Student dziedzicząca po klasie Osoba
  160. class Student: Osoba {
  161.     var numerIndeksu: String
  162.     var kierunekStudiow: KierunekStudiow
  163.     var rokStudiow: Int
  164.     var oceny: [Int]
  165.    
  166.     init(imie: String, nazwisko: String, rokUrodzenia: Int, numerIndeksu: String, kierunekStudiow: KierunekStudiow, rokStudiow: Int, oceny: [Int]) {
  167.         self.numerIndeksu = numerIndeksu
  168.         self.kierunekStudiow = kierunekStudiow
  169.         self.rokStudiow = rokStudiow
  170.         self.oceny = oceny
  171.        
  172.         // Wywołaj init z klasy Osoba
  173.         super.init(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia)
  174.        
  175.         // Sprawdź poprawność ocen (zakres od 2 do 5)
  176.         for ocena in oceny {
  177.             if ocena < 2 || ocena > 5 {
  178.                 print("Błąd: Ocena \(ocena) jest niepoprawna. Wprowadź oceny od 2 do 5.")
  179.                 return
  180.             }
  181.         }
  182.     }
  183.    
  184.     func obliczSrednia() -> Double {
  185.         let sumaOcen = Double(oceny.reduce(0, +))
  186.         return sumaOcen / Double(oceny.count)
  187.     }
  188.    
  189.     // Nadpisz funkcję wyswietlDane z klasy Osoba
  190.     override func wyswietlDane() {
  191.         super.wyswietlDane()
  192.         print("Numer indeksu: \(numerIndeksu)")
  193.         print("Kierunek studiów: \(kierunekStudiow.rawValue)")
  194.         print("Rok studiów: \(rokStudiow)")
  195.         print("Oceny: \(oceny)")
  196.     }
  197. }
  198.  
  199. // Funkcja do wczytywania danych studenta od użytkownika
  200. func wczytajDaneStudenta() -> Student? {
  201.     print("Podaj imię:")
  202.     guard let imie = readLine(), !imie.isEmpty else {
  203.         print("Błąd: Nie podano imienia.")
  204.         return nil
  205.     }
  206.    
  207.     print("Podaj nazwisko:")
  208.     guard let nazwisko = readLine(), !nazwisko.isEmpty else {
  209.         print("Błąd: Nie podano nazwiska.")
  210.         return nil
  211.     }
  212.    
  213.     print("Podaj rok urodzenia:")
  214.     guard let rokUrodzeniaInput = readLine(), let rokUrodzenia = Int(rokUrodzeniaInput) else {
  215.         print("Błąd: Nieprawidłowy rok urodzenia.")
  216.         return nil
  217.     }
  218.    
  219.     print("Podaj numer indeksu:")
  220.     guard let numerIndeksu = readLine(), !numerIndeksu.isEmpty else {
  221.         print("Błąd: Nie podano numeru indeksu.")
  222.         return nil
  223.     }
  224.    
  225.     print("Podaj kierunek studiów (informatyka, matematyka, fizyka):")
  226.     guard let kierunekInput = readLine(), let kierunekStudiow = KierunekStudiow(rawValue: kierunekInput) else {
  227.         print("Błąd: Nieprawidłowy kierunek studiów.")
  228.         return nil
  229.     }
  230.    
  231.     print("Podaj rok studiów:")
  232.     guard let rokStudiowInput = readLine(), let rokStudiow = Int(rokStudiowInput) else {
  233.         print("Błąd: Nieprawidłowy rok studiów.")
  234.         return nil
  235.     }
  236.    
  237.     print("Podaj oceny z 5 przedmiotów (oddzielone spacją):")
  238.     guard let ocenyInput = readLine(), let oceny = ocenyInput.components(separatedBy: " ").compactMap({ Int($0) }) else {
  239.         print("Błąd: Nieprawidłowe oceny.")
  240.         return nil
  241.     }
  242.    
  243.     return Student(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia, numerIndeksu: numerIndeksu, kierunekStudiow: kierunekStudiow, rokStudiow: rokStudiow, oceny: oceny)
  244. }
  245.  
  246. // Funkcja wyświetlająca studentów studiujących na podanym kierunku
  247. func wyswietlStudentowNaKierunku(studenci: [Student], kierunek: KierunekStudiow) {
  248.     let studenciNaKierunku = studenci.filter { $0.kierunekStudiow == kierunek }
  249.    
  250.     if studenciNaKierunku.isEmpty {
  251.         print("Brak studentów na kierunku \(kierunek.rawValue).")
  252.     } else {
  253.         print("Studenci na kierunku \(kierunek.rawValue):")
  254.         for student in studenciNaKierunku {
  255.             student.wyswietlDane()
  256.             print("Średnia ocen: \(student.obliczSrednia())\n")
  257.         }
  258.     }
  259. }
  260.  
  261. // Wczytaj liczbę studentów od użytkownika
  262. print("Podaj liczbę studentów:")
  263. guard let liczbaStudentowInput = readLine(), let liczbaStudentow = Int(liczbaStudentowInput) else {
  264.     print("Błąd: Nieprawidłowa liczba studentów.")
  265.     exit(1)
  266. }
  267.  
  268. // Wczytaj dane dla każdego studenta
  269. var listaStudentow: [Student] = []
  270. for _ in 1...liczbaStudentow {
  271.     print("\nWprowadź dane dla studenta \(listaStudentow.count + 1):")
  272.     if let student = wczytajDaneStudenta() {
  273.         listaStudentow.append(student)
  274.     } else {
  275.         print("Błąd: Nie udało się wczytać danych dla studenta.")
  276.     }
  277. }
  278.  
  279. // Wyświetl studentów na danym kierunku studiów
  280. print("\nPodaj kierunek studiów, aby wyświetlić studentów:")
  281. guard let kierunekInput = readLine(), let kierunek = KierunekStudiow(rawValue: kierunekInput) else {
  282.     print("Błąd: Nieprawidłowy kierunek studiów.")
  283.     exit(1)
  284. }
  285.  
  286. wyswietlStudentowNaKierunku(studenci: listaStudentow, kierunek: kierunek)
  287.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement