Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Osoba {
- var imie: String
- var nazwisko: String
- var rokUrodzenia: Int
- init(imie: String, nazwisko: String, rokUrodzenia: Int) {
- self.imie = imie
- self.nazwisko = nazwisko
- self.rokUrodzenia = rokUrodzenia
- }
- func obliczWiek() -> Int {
- let aktualnyRok = 2023 // Możesz użyć funkcji do uzyskania aktualnego roku
- return aktualnyRok - rokUrodzenia
- }
- func wyswietlDane() {
- print("Imię: \(imie), Nazwisko: \(nazwisko), Rok urodzenia: \(rokUrodzenia)")
- }
- }
- // Przetestuj utworzone funkcje
- let osoba1 = Osoba(imie: "Jan", nazwisko: "Kowalski", rokUrodzenia: 1990)
- let osoba2 = Osoba(imie: "Anna", nazwisko: "Nowak", rokUrodzenia: 1995)
- osoba1.wyswietlDane()
- osoba2.wyswietlDane()
- let wiekOsoby1 = osoba1.obliczWiek()
- let wiekOsoby2 = osoba2.obliczWiek()
- if wiekOsoby1 < wiekOsoby2 {
- print("\(osoba1.imie) jest młodszy/młodsza niż \(osoba2.imie).")
- } else if wiekOsoby1 > wiekOsoby2 {
- print("\(osoba1.imie) jest starszy/starsza niż \(osoba2.imie).")
- } else {
- print("\(osoba1.imie) i \(osoba2.imie) mają ten sam wiek.")
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Typ wyliczeniowy dla stanowiska
- enum Stanowisko: String {
- case programista
- case projektant
- case manager
- // Dodaj inne stanowiska, jeśli są potrzebne
- }
- // Klasa Osoba
- class Osoba {
- var imie: String
- var nazwisko: String
- var rokUrodzenia: Int
- init(imie: String, nazwisko: String, rokUrodzenia: Int) {
- self.imie = imie
- self.nazwisko = nazwisko
- self.rokUrodzenia = rokUrodzenia
- }
- func obliczWiek() -> Int {
- let aktualnyRok = 2023 // Możesz użyć funkcji do uzyskania aktualnego roku
- return aktualnyRok - rokUrodzenia
- }
- func wyswietlDane() {
- print("Imię: \(imie), Nazwisko: \(nazwisko), Rok urodzenia: \(rokUrodzenia)")
- }
- }
- // Klasa Pracownik dziedzicząca po klasie Osoba
- class Pracownik: Osoba {
- var rokZatrudnienia: Int
- var stanowisko: Stanowisko
- var stawkaZaGodzine: Double
- var liczbaGodzin: Double
- var nazwaFirmy: String
- init(imie: String, nazwisko: String, rokUrodzenia: Int, rokZatrudnienia: Int, stanowisko: Stanowisko, stawkaZaGodzine: Double, liczbaGodzin: Double, nazwaFirmy: String) {
- self.rokZatrudnienia = rokZatrudnienia
- self.stanowisko = stanowisko
- self.stawkaZaGodzine = stawkaZaGodzine
- self.liczbaGodzin = liczbaGodzin
- self.nazwaFirmy = nazwaFirmy
- // Wywołaj init z klasy Osoba
- super.init(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia)
- }
- func liczbaLatPracy() -> Int {
- let aktualnyRok = 2023 // Możesz użyć funkcji do uzyskania aktualnego roku
- return aktualnyRok - rokZatrudnienia
- }
- func obliczPensje() -> Double {
- return stawkaZaGodzine * liczbaGodzin
- }
- // Nadpisz funkcję wyswietlDane z klasy Osoba
- override func wyswietlDane() {
- super.wyswietlDane()
- print("Rok zatrudnienia: \(rokZatrudnienia)")
- print("Stanowisko: \(stanowisko.rawValue)")
- print("Stawka za godzinę: \(stawkaZaGodzine)")
- print("Liczba godzin: \(liczbaGodzin)")
- print("Nazwa firmy: \(nazwaFirmy)")
- }
- }
- // Przetestuj utworzone funkcje dla dwóch pracowników
- let pracownik1 = Pracownik(imie: "Jan", nazwisko: "Kowalski", rokUrodzenia: 1990, rokZatrudnienia: 2015, stanowisko: .programista, stawkaZaGodzine: 50.0, liczbaGodzin: 160.0, nazwaFirmy: "Firma A")
- let pracownik2 = Pracownik(imie: "Anna", nazwisko: "Nowak", rokUrodzenia: 1995, rokZatrudnienia: 2018, stanowisko: .projektant, stawkaZaGodzine: 45.0, liczbaGodzin: 140.0, nazwaFirmy: "Firma B")
- pracownik1.wyswietlDane()
- print("Liczba lat pracy: \(pracownik1.liczbaLatPracy())")
- print("Pensja: \(pracownik1.obliczPensje())")
- pracownik2.wyswietlDane()
- print("Liczba lat pracy: \(pracownik2.liczbaLatPracy())")
- print("Pensja: \(pracownik2.obliczPensje())")
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Typ wyliczeniowy dla kierunku studiów
- enum KierunekStudiow: String {
- case informatyka
- case matematyka
- case fizyka
- // Dodaj inne kierunki, jeśli są potrzebne
- }
- // Klasa Osoba
- class Osoba {
- var imie: String
- var nazwisko: String
- var rokUrodzenia: Int
- init(imie: String, nazwisko: String, rokUrodzenia: Int) {
- self.imie = imie
- self.nazwisko = nazwisko
- self.rokUrodzenia = rokUrodzenia
- }
- func obliczWiek() -> Int {
- let aktualnyRok = 2023 // Możesz użyć funkcji do uzyskania aktualnego roku
- return aktualnyRok - rokUrodzenia
- }
- func wyswietlDane() {
- print("Imię: \(imie), Nazwisko: \(nazwisko), Rok urodzenia: \(rokUrodzenia)")
- }
- }
- // Klasa Student dziedzicząca po klasie Osoba
- class Student: Osoba {
- var numerIndeksu: String
- var kierunekStudiow: KierunekStudiow
- var rokStudiow: Int
- var oceny: [Int]
- init(imie: String, nazwisko: String, rokUrodzenia: Int, numerIndeksu: String, kierunekStudiow: KierunekStudiow, rokStudiow: Int, oceny: [Int]) {
- self.numerIndeksu = numerIndeksu
- self.kierunekStudiow = kierunekStudiow
- self.rokStudiow = rokStudiow
- self.oceny = oceny
- // Wywołaj init z klasy Osoba
- super.init(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia)
- // Sprawdź poprawność ocen (zakres od 2 do 5)
- for ocena in oceny {
- if ocena < 2 || ocena > 5 {
- print("Błąd: Ocena \(ocena) jest niepoprawna. Wprowadź oceny od 2 do 5.")
- return
- }
- }
- }
- func obliczSrednia() -> Double {
- let sumaOcen = Double(oceny.reduce(0, +))
- return sumaOcen / Double(oceny.count)
- }
- // Nadpisz funkcję wyswietlDane z klasy Osoba
- override func wyswietlDane() {
- super.wyswietlDane()
- print("Numer indeksu: \(numerIndeksu)")
- print("Kierunek studiów: \(kierunekStudiow.rawValue)")
- print("Rok studiów: \(rokStudiow)")
- print("Oceny: \(oceny)")
- }
- }
- // Funkcja do wczytywania danych studenta od użytkownika
- func wczytajDaneStudenta() -> Student? {
- print("Podaj imię:")
- guard let imie = readLine(), !imie.isEmpty else {
- print("Błąd: Nie podano imienia.")
- return nil
- }
- print("Podaj nazwisko:")
- guard let nazwisko = readLine(), !nazwisko.isEmpty else {
- print("Błąd: Nie podano nazwiska.")
- return nil
- }
- print("Podaj rok urodzenia:")
- guard let rokUrodzeniaInput = readLine(), let rokUrodzenia = Int(rokUrodzeniaInput) else {
- print("Błąd: Nieprawidłowy rok urodzenia.")
- return nil
- }
- print("Podaj numer indeksu:")
- guard let numerIndeksu = readLine(), !numerIndeksu.isEmpty else {
- print("Błąd: Nie podano numeru indeksu.")
- return nil
- }
- print("Podaj kierunek studiów (informatyka, matematyka, fizyka):")
- guard let kierunekInput = readLine(), let kierunekStudiow = KierunekStudiow(rawValue: kierunekInput) else {
- print("Błąd: Nieprawidłowy kierunek studiów.")
- return nil
- }
- print("Podaj rok studiów:")
- guard let rokStudiowInput = readLine(), let rokStudiow = Int(rokStudiowInput) else {
- print("Błąd: Nieprawidłowy rok studiów.")
- return nil
- }
- print("Podaj oceny z 5 przedmiotów (oddzielone spacją):")
- guard let ocenyInput = readLine(), let oceny = ocenyInput.components(separatedBy: " ").compactMap({ Int($0) }) else {
- print("Błąd: Nieprawidłowe oceny.")
- return nil
- }
- return Student(imie: imie, nazwisko: nazwisko, rokUrodzenia: rokUrodzenia, numerIndeksu: numerIndeksu, kierunekStudiow: kierunekStudiow, rokStudiow: rokStudiow, oceny: oceny)
- }
- // Funkcja wyświetlająca studentów studiujących na podanym kierunku
- func wyswietlStudentowNaKierunku(studenci: [Student], kierunek: KierunekStudiow) {
- let studenciNaKierunku = studenci.filter { $0.kierunekStudiow == kierunek }
- if studenciNaKierunku.isEmpty {
- print("Brak studentów na kierunku \(kierunek.rawValue).")
- } else {
- print("Studenci na kierunku \(kierunek.rawValue):")
- for student in studenciNaKierunku {
- student.wyswietlDane()
- print("Średnia ocen: \(student.obliczSrednia())\n")
- }
- }
- }
- // Wczytaj liczbę studentów od użytkownika
- print("Podaj liczbę studentów:")
- guard let liczbaStudentowInput = readLine(), let liczbaStudentow = Int(liczbaStudentowInput) else {
- print("Błąd: Nieprawidłowa liczba studentów.")
- exit(1)
- }
- // Wczytaj dane dla każdego studenta
- var listaStudentow: [Student] = []
- for _ in 1...liczbaStudentow {
- print("\nWprowadź dane dla studenta \(listaStudentow.count + 1):")
- if let student = wczytajDaneStudenta() {
- listaStudentow.append(student)
- } else {
- print("Błąd: Nie udało się wczytać danych dla studenta.")
- }
- }
- // Wyświetl studentów na danym kierunku studiów
- print("\nPodaj kierunek studiów, aby wyświetlić studentów:")
- guard let kierunekInput = readLine(), let kierunek = KierunekStudiow(rawValue: kierunekInput) else {
- print("Błąd: Nieprawidłowy kierunek studiów.")
- exit(1)
- }
- wyswietlStudentowNaKierunku(studenci: listaStudentow, kierunek: kierunek)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement