Advertisement
wtgftw

Untitled

Nov 17th, 2023
853
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 7.93 KB | None | 0 0
  1. // Zadanie 10.1
  2.  
  3. class Osoba {
  4.     var imie: String
  5.     var nazwisko: String
  6.     var rokUrodzenia: Int
  7.  
  8.     init(imie: String, nazwisko: String, rokUrodzenia: Int) {
  9.         self.imie = imie
  10.         self.nazwisko = nazwisko
  11.         self.rokUrodzenia = rokUrodzenia
  12.     }
  13.  
  14.     func obliczWiek() -> Int {
  15.         let aktualnyRok = 2023 // aktualny rok
  16.         return aktualnyRok - rokUrodzenia
  17.     }
  18.  
  19.     func wyswietlDane() {
  20.         print("Imię: \(imie), Nazwisko: \(nazwisko), Rok urodzenia: \(rokUrodzenia)")
  21.     }
  22. }
  23.  
  24. let osoba1 = Osoba(imie: "Jan", nazwisko: "Kowalski", rokUrodzenia: 1990)
  25. let osoba2 = Osoba(imie: "Anna", nazwisko: "Nowak", rokUrodzenia: 1995)
  26.  
  27. osoba1.wyswietlDane()
  28. print("Wiek: \(osoba1.obliczWiek()) lat")
  29.  
  30. osoba2.wyswietlDane()
  31. print("Wiek: \(osoba2.obliczWiek()) lat")
  32.  
  33. if osoba1.obliczWiek() > osoba2.obliczWiek() {
  34.     print("\(osoba1.imie) jest starsza od \(osoba2.imie).")
  35. } else if osoba1.obliczWiek() < osoba2.obliczWiek() {
  36.     print("\(osoba1.imie) jest młodsza od \(osoba2.imie).")
  37. } else {
  38.     print("\(osoba1.imie) i \(osoba2.imie) są w tym samym wieku.")
  39. }
  40.  
  41.  
  42. // Zadanie 10.2
  43.  
  44. enum Stanowisko {
  45.     case manager, pracownik, specjalista
  46. }
  47.  
  48. class Pracownik: Osoba {
  49.     var rokZatrudnienia: Int
  50.     var stanowisko: Stanowisko
  51.     var stawkaZaGodzine: Double
  52.     var liczbaGodzin: Double
  53.     var firma: String
  54.  
  55.     init(imie: String, nazwisko: String, rokUrodzenia: Int, rokZatrudnienia: Int, stanowisko: Stanowisko, stawkaZaGodzine: Double, liczbaGodzin: Double, firma: String) {
  56.         self.rokZatrudnienia = rokZatrudnienia
  57.         self.stanowisko = stanowisko
  58.         self.stawkaZaGodzine = stawkaZaGodzine
  59.         self.liczbaGodzin = liczbaGodzin
  60.         self.firma = firma
  61.         super.init(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia)
  62.     }
  63.  
  64.     func liczbaLatPracy() -> Int {
  65.         let aktualnyRok = 2023 // aktualny rok
  66.         return aktualnyRok - rokZatrudnienia
  67.     }
  68.  
  69.     func obliczPensje() -> Double {
  70.         return stawkaZaGodzine * liczbaGodzin
  71.     }
  72.  
  73.     override func wyswietlDane() {
  74.         super.wyswietlDane()
  75.         print("Rok zatrudnienia: \(rokZatrudnienia)")
  76.         print("Stanowisko: \(stanowisko)")
  77.         print("Firma: \(firma)")
  78.         print("Liczba lat pracy: \(liczbaLatPracy())")
  79.         print("Pensja: \(obliczPensje())")
  80.     }
  81. }
  82.  
  83. let pracownik1 = Pracownik(imie: "Adam", nazwisko: "Nowak", rokUrodzenia: 1985, rokZatrudnienia: 2010, stanowisko: .specjalista, stawkaZaGodzine: 50.0, liczbaGodzin: 160.0, firma: "XYZ Corp")
  84.  
  85. let pracownik2 = Pracownik(imie: "Ewa", nazwisko: "Kowalska", rokUrodzenia: 1990, rokZatrudnienia: 2015, stanowisko: .pracownik, stawkaZaGodzine: 40.0, liczbaGodzin: 150.0, firma: "ABC Inc")
  86.  
  87. pracownik1.wyswietlDane()
  88. pracownik2.wyswietlDane()
  89.  
  90.  
  91. // Zadanie 10.3
  92.  
  93. enum KierunekStudiow: String {
  94.     case informatyka, matematyka, fizyka, chemia
  95. }
  96.  
  97. class Student: Osoba {
  98.     var numerIndeksu: String
  99.     var kierunekStudiow: KierunekStudiow
  100.     var rokStudiow: Int
  101.     var oceny: [Double]
  102.  
  103.     init(imie: String, nazwisko: String, rokUrodzenia: Int, numerIndeksu: String, kierunekStudiow: KierunekStudiow, rokStudiow: Int, oceny: [Double]) {
  104.         self.numerIndeksu = numerIndeksu
  105.         self.kierunekStudiow = kierunekStudiow
  106.         self.rokStudiow = rokStudiow
  107.         self.oceny = oceny
  108.  
  109.         super.init(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia)
  110.     }
  111.  
  112.     func sredniaOcen() -> Double {
  113.         let sumaOcen = oceny.reduce(0, +)
  114.         return sumaOcen / Double(oceny.count)
  115.     }
  116.  
  117.     override func wyswietlDane() {
  118.         super.wyswietlDane()
  119.         print("Numer indeksu: \(numerIndeksu)")
  120.         print("Kierunek studiów: \(kierunekStudiow.rawValue)")
  121.         print("Rok studiów: \(rokStudiow)")
  122.         print("Oceny: \(oceny)")
  123.         print("Średnia ocen: \(sredniaOcen())")
  124.     }
  125. }
  126.  
  127. print("Podaj liczbę studentów:")
  128. if let liczbaStudentow = readLine(), let liczba = Int(liczbaStudentow) {
  129.     var studenci: [Student] = []
  130.  
  131.     for _ in 0..<liczba {
  132.         print("Podaj imię studenta:")
  133.         guard let imie = readLine() else { continue }
  134.  
  135.         print("Podaj nazwisko studenta:")
  136.         guard let nazwisko = readLine() else { continue }
  137.  
  138.         print("Podaj rok urodzenia studenta:")
  139.         guard let rokUrodzeniaString = readLine(), let rokUrodzenia = Int(rokUrodzeniaString) else { continue }
  140.  
  141.         print("Podaj numer indeksu studenta:")
  142.         guard let numerIndeksu = readLine() else { continue }
  143.  
  144.         print("Podaj kierunek studiów studenta (informatyka, matematyka, fizyka, chemia):")
  145.         guard let kierunekString = readLine(), let kierunek = KierunekStudiow(rawValue: kierunekString) else { continue }
  146.  
  147.         print("Podaj rok studiów studenta:")
  148.         guard let rokStudiowString = readLine(), let rokStudiow = Int(rokStudiowString) else { continue }
  149.  
  150.         print("Podaj oceny studenta (oddzielone przecinkiem):")
  151.         guard let ocenyString = readLine(), let oceny = ocenyString.components(separatedBy: ",").compactMap({ Double($0) }) else { continue }
  152.  
  153.         let student = Student(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia, numerIndeksu: numerIndeksu, kierunekStudiow: kierunek, rokStudiow: rokStudiow, oceny: oceny)
  154.         studenci.append(student)
  155.     }
  156.  
  157.     for student in studenci {
  158.         student.wyswietlDane()
  159.         print()
  160.     }
  161.  
  162.     print("Podaj kierunek studiów do wyświetlenia:")
  163.     if let kierunekString = readLine(), let kierunek = KierunekStudiow(rawValue: kierunekString) {
  164.         let studenciNaKierunku = studenci.filter { $0.kierunekStudiow == kierunek }
  165.         for student in studenciNaKierunku {
  166.             student.wyswietlDane()
  167.             print()
  168.         }
  169.     } else {
  170.         print("Błędny kierunek studiów.")
  171.     }
  172. }
  173.  
  174.  
  175. // Zadanie 10.4
  176.  
  177. // Polecenie 1
  178. class StudentNaErasmusie: Student {
  179.     var nazwaUczelniZaGranica: String
  180.     var dataRozpoczeciaErasmusa: String
  181.     var dataZakonczeniaErasmusa: String
  182.     var kursy: [(nazwa: String, ocena: Double)]
  183.  
  184.     // Polecenie 2
  185.     init(imie: String, nazwisko: String, rokUrodzenia: Int, numerIndeksu: String, kierunekStudiow: KierunekStudiow, rokStudiow: Int, oceny: [Double], nazwaUczelniZaGranica: String, dataRozpoczeciaErasmusa: String, dataZakonczeniaErasmusa: String, kursy: [(nazwa: String, ocena: Double)]) {
  186.         self.nazwaUczelniZaGranica = nazwaUczelniZaGranica
  187.         self.dataRozpoczeciaErasmusa = dataRozpoczeciaErasmusa
  188.         self.dataZakonczeniaErasmusa = dataZakonczeniaErasmusa
  189.         self.kursy = kursy
  190.  
  191.         super.init(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia, numerIndeksu: numerIndeksu, kierunekStudiow: kierunekStudiow, rokStudiow: rokStudiow, oceny: oceny)
  192.     }
  193.  
  194.     // Polecenie 4
  195.     func czasNaErasmusie() -> Int {
  196.         // Implementacja funkcji
  197.     }
  198.  
  199.     // Polecenie 5
  200.     func ocenaZErasmusa() -> Double {
  201.         // Implementacja funkcji
  202.     }
  203.  
  204.     // Polecenie 3
  205.     override func wyswietlDane() {
  206.         super.wyswietlDane()
  207.         print("Uczelnia za granicą: \(nazwaUczelniZaGranica)")
  208.         print("Rozpoczęcie Erasmusa: \(dataRozpoczeciaErasmusa)")
  209.         print("Zakończenie Erasmusa: \(dataZakonczeniaErasmusa)")
  210.         print("Kursy na Erasmusie:")
  211.         for kurs in kursy {
  212.             print("\(kurs.nazwa) - Ocena: \(kurs.ocena)")
  213.         }
  214.         print("Czas spędzony na Erasmusie: \(czasNaErasmusie()) dni")
  215.         print("Średnia ocena z Erasmusa: \(ocenaZErasmusa())")
  216.     }
  217. }
  218.  
  219. // Przykładowe użycie
  220.  
  221. let studentErasmus = StudentNaErasmusie(imie: "Alicja", nazwisko: "Nowak", rokUrodzenia: 1998, numerIndeksu: "12345", kierunekStudiow: .informatyka, rokStudiow: 3, oceny: [4.5, 5.0, 4.0, 3.5, 5.0], nazwaUczelniZaGranica: "Uniwersytet XYZ", dataRozpoczeciaErasmusa: "2023-09-01", dataZakonczeniaErasmusa: "2024-02-29", kursy: [("Historia Sztuki", 4.0), ("Język Obcy", 5.0)])
  222. studentErasmus.wyswietlDane()
  223.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement