diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..09c630f Binary files /dev/null and b/.DS_Store differ diff --git a/lesson2/.DS_Store b/lesson2/.DS_Store new file mode 100644 index 0000000..bdee009 Binary files /dev/null and b/lesson2/.DS_Store differ diff --git a/lesson2/main.swift b/lesson2/main.swift new file mode 100644 index 0000000..a653e50 --- /dev/null +++ b/lesson2/main.swift @@ -0,0 +1,103 @@ +// +// main.swift +// lesson2 +// +// Created by Vladislav Elkin on 15.07.2020. +// Copyright © 2020 Vladislav Elkin. All rights reserved. +// + +import Foundation + +//1.Написать функцию, которая определяет, четное число или нет. + +func isEven(_ number: Int) -> Bool { + return number % 2 == 0 ? true : false; +} + +print(isEven(10)); +print(isEven(5)); +print("\r\n===============================\r\n") + +//2. Написать функцию, которая определяет, делится ли число без остатка на 3. + +func function2(_ number: Int) -> Bool{ + return number % 3 == 0 ? true : false; +} + +print(function2(9)); +print(function2(7)); +print("\r\n===============================\r\n") + +//3. Создать возрастающий массив из 100 чисел. + +var tArray: [Int] = []; +for i in 0...100 { + tArray.append(i) +} + +print(tArray) +print("\r\n===============================\r\n") + +//4. Удалить из этого массива все четные числа и все числа, которые не делятся на 3. + +for(index, value) in tArray.enumerated(){ + if isEven(value) || !function2(value) { + tArray.remove(at: tArray.firstIndex(of: value)!); + } +} + +print(tArray) + +print("\r\n===============================\r\n") + +//5. * Написать функцию, которая добавляет в массив новое число Фибоначчи, и добавить при помощи нее 100 элементов. + +func fibonacci(_ n: Int64) -> Int64{ + if n == 1 || n == 2 { + return 1; + } + + return fibonacci(n - 1) + fibonacci(n - 2); +} + +var fibonacciArray: [Int64] = []; + +for i in 1...101{ + fibonacciArray.append(fibonacci(Int64(i))); +} + +print(fibonacciArray); + +print("\r\n===============================\r\n") + +/* + 6. * Заполнить массив из 100 элементов различными простыми числами. Натуральное число, большее единицы, называется простым, если оно делится только на себя и на единицу. Для нахождения всех простых чисел не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги: +*/ + +func isPrime (_ number: Int64) -> Bool { + if number < 2 { + return false; + } + for i in 2.. [Int64] { + var resultArray: [Int64] = []; + var i = 2 + while resultArray.count < count { + if isPrime(Int64(i)) { + resultArray.append(Int64(i)); + } + i += 1; + } + + return resultArray; +} +print (getPrimeArray(100)); + +print("\r\n===============================\r\n") diff --git a/lesson3/main.swift b/lesson3/main.swift new file mode 100644 index 0000000..6efbfa8 --- /dev/null +++ b/lesson3/main.swift @@ -0,0 +1,145 @@ +// +// main.swift +// lesson3 +// +// Created by Vladislav Elkin on 21.07.2020. +// Copyright © 2020 Vladislav Elkin. All rights reserved. +// + +import Foundation + +enum DoorState{ + case open, close; +} + +enum EngineState{ + case start, stop; +} + +enum VolumeState{ + case full, empty; +} + +enum VolumeAction { + case add, get; +} + +struct sportCar { + let brand: String; + let year: Int; + let trunkVolume: Double; + var engineState: EngineState; + var doorState: DoorState; + var volumeState: VolumeState; + + mutating func changeDoorState (state: DoorState){ + self.doorState = state; + } + + mutating func changeEngineState(state: EngineState){ + self.engineState = state; + } + + mutating func changeVolume(action: VolumeAction, count: Double){ + switch action { + case .add: + + if volumeState == .full { + print("Trunk is full"); + } else { + if count >= trunkVolume { + volumeState = .full; + print("All added, Trunk is full"); + }else { + print("Added: \(count)"); + } + } + + break; + + case .get: + + if volumeState == .empty { + print("Trunk is empty"); + } else { + + if count >= trunkVolume { + volumeState = .empty; + print("Trunk is empty"); + }else { + print("Get: \(count)"); + } + } + + break; + } + } +} + + +struct truckCar { + let brand: String; + let year: Int; + let trunkVolume: Double; + var engineState: EngineState; + var doorState: DoorState; + var volumeState: VolumeState; + + mutating func changeDoorState (state: DoorState){ + self.doorState = state; + } + + mutating func changeEngineState(state: EngineState){ + self.engineState = state; + } + + mutating func changeVolume(action: VolumeAction, count: Double){ + switch action { + case .add: + + if volumeState == .full { + print("Trunk is full"); + } else { + if count >= trunkVolume { + volumeState = .full; + print("All added, Trunk is full"); + }else { + print("Added: \(count)"); + } + } + + break; + + case .get: + + if volumeState == .empty { + print("Trunk is empty"); + } else { + + if count >= trunkVolume { + volumeState = .empty; + print("Trunk is empty"); + }else { + print("Get: \(count)"); + } + } + + break; + } + } +} + +var mersedes = sportCar(brand: "mersedes", year: 2010, trunkVolume: 200, engineState: .stop, doorState: .close, volumeState: .empty); + +mersedes.changeDoorState(state: .open); +mersedes.changeVolume(action: .add, count: 200); + +print(mersedes); + + +var scania = truckCar(brand: "Scania", year: 2009, trunkVolume: 1000, engineState: .stop, doorState: .open, volumeState: .full); + +scania.changeDoorState(state: .close); +scania.changeEngineState(state: .start); + +print(scania); diff --git a/lesson4/main.swift b/lesson4/main.swift new file mode 100644 index 0000000..2d8eacb --- /dev/null +++ b/lesson4/main.swift @@ -0,0 +1,133 @@ +// +// main.swift +// lesson4 +// +// Created by Vladislav Elkin on 23.07.2020. +// Copyright © 2020 Vladislav Elkin. All rights reserved. +// + +import Foundation + +enum DoorState{ + case open, close; +} + +enum EngineState{ + case start, stop; +} + +enum VolumeState{ + case full, empty; +} + +enum VolumeAction { + case add, get; +} + +class AbstractCar { + let brand: String; + let year: Int; + let trunkVolume: Double; + var engineState: EngineState; + var doorState: DoorState; + var volumeState: VolumeState; + + init(brand: String, year: Int, trunkVolume: Double, engineState: EngineState, doorState: DoorState, volumeState: VolumeState) { + self.brand = brand; + self.year = year; + self.trunkVolume = trunkVolume; + self.engineState = engineState; + self.doorState = doorState; + self.volumeState = volumeState; + } + + func changeDoorState (state: DoorState){ + self.doorState = state; + } + + func changeEngineState(state: EngineState){ + self.engineState = state; + } + + func changeVolume(action: VolumeAction, count: Double){ + switch action { + case .add: + + if volumeState == .full { + print("Trunk is full"); + } else { + if count >= trunkVolume { + volumeState = .full; + print("All added, Trunk is full"); + }else { + print("Added: \(count)"); + } + } + + + case .get: + + if volumeState == .empty { + print("Trunk is empty"); + } else { + + if count >= trunkVolume { + volumeState = .empty; + print("Trunk is empty"); + }else { + print("Get: \(count)"); + } + } + + } + } + + func toString(){ + print("Brand: \(brand) Year: \(year) TrunkVolume: \(trunkVolume) EngineState: \(engineState) DoorState: \(doorState) VolumeState: \(volumeState)") + } +} + + +class TrunkCar: AbstractCar { + var destination: String; + + init(brand: String, year: Int, trunkVolume: Double, engineState: EngineState, doorState: DoorState, volumeState: VolumeState, destination: String) { + self.destination = destination; + super.init(brand: brand, year: year, trunkVolume: trunkVolume, engineState: engineState, doorState: doorState, volumeState: volumeState) + } + + override func toString() { + super.toString() + print("Destination: \(destination)") + } +} + +class SportCar: AbstractCar { + var maxSpeed: Int; + var power: Int; + + + init(brand: String, year: Int, trunkVolume: Double, engineState: EngineState, doorState: DoorState, volumeState: VolumeState, maxSpeed: Int, power: Int) { + self.maxSpeed = maxSpeed; + self.power = power; + super.init(brand: brand, year: year, trunkVolume: trunkVolume, engineState: engineState, doorState: doorState, volumeState: volumeState) + + } + + override func toString() { + super.toString() + print("MaxSpeed: \(maxSpeed) Power: \(power)") + } + +} + +var mers = SportCar(brand: "mersede", year: 2019, trunkVolume: 200, engineState: .stop, doorState: .close, volumeState: .full, maxSpeed: 320, power: 612) + +mers.changeDoorState(state: .open); +mers.changeEngineState(state: .start); +mers.toString() + +var scania = TrunkCar(brand: "Scania", year: 2011, trunkVolume: 1000, engineState: .start, doorState: .open, volumeState: .empty, destination: "Moscow") + +scania.changeDoorState(state: .close); +scania.toString() diff --git a/main.swift b/main.swift new file mode 100644 index 0000000..7e084f3 --- /dev/null +++ b/main.swift @@ -0,0 +1,54 @@ +// +// main.swift +// test1 +// +// Created by Vladislav Elkin on 13.07.2020. +// Copyright © 2020 Vladislav Elkin. All rights reserved. +// + +import Foundation + +//1. Решить квадратное уравнение. + +let a:Double = 1; +let b:Double = -8; +let c:Double = 15; +let discriminant = (b * b) - (4 * a * c); + +if discriminant < 0 { + print("Корней нет!"); +}else if (discriminant == 0){ + let x = (-b + sqrt(discriminant)) / (2 * a); + print("x = \(x)"); +}else{ + let x1 = (-b + sqrt(discriminant)) / (2 * a); + let x2 = (-b - sqrt(discriminant)) / (2 * a); + + print("x1 = \(x1), x2 = \(x2)"); +} + + +//2. Даны катеты прямоугольного треугольника. Найти площадь, периметр и гипотенузу треугольника. + +let catA: Double = 5; +let catB: Double = 6; + +let gipC = sqrt((catA * catA) + (catB * catB)); +let S = 0.5 * catB * catA; +let P = catB + catA + gipC; + +print("P = \(P), S = \(S), C = \(gipC)") + +//3. *Пользователь вводит сумму вклада в банк и годовой процент. Найти сумму вклада через 5 лет. + +var deposit: Double = 1000; +var years: Double = 5; +let procent: Double = 7; + +while years > 0 { + deposit += deposit * procent / 100; + years-=1; +} + +print(deposit); +