Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.08 KB | None | 0 0
  1. /*
  2. 3. Создать структуру «Отрезок», содержащую две внутренние структуры «Точки». Структуру «Точка»
  3. создать самостоятельно, несмотря на уже имеющуюся в Swift’е. Таким образом, структура «Отрезок»
  4. содержит две структуры «Точки» — точки A и B (stored properties). Добавить два computed properties:
  5. « середина отрезка» и «длина» (считать математическими функциями)
  6.  
  7. 4. При изменении середины отрезка должно меняться положение точек A и B.
  8. */
  9.  
  10.  
  11. import Foundation
  12.  
  13. struct Point {
  14.  
  15.     var x: Double
  16.     var y: Double
  17. }
  18.  
  19. struct Segment {
  20.  
  21.     var pointA: Point
  22.     var pointB: Point
  23.    
  24.     var midPoint: Point {
  25.         get {
  26.             let midPointX = (pointA.x + pointB.x) / 2
  27.             let midPointy = (pointA.y + pointB.y) / 2
  28.             return Point(x: midPointX, y: midPointy)
  29.         }
  30.         set {
  31.             if pointB.y >= pointA.y {
  32.                 let lengthY = (pointB.y - pointA.y) / 2
  33.                 pointA.x = newValue.x - lengthY
  34.                 pointA.y = newValue.y - lengthY
  35.                 pointB.x = newValue.x + lengthY
  36.                 pointB.y = newValue.y + lengthY
  37.             } else {
  38.                 let lengthY = (pointA.y - pointB.y) / 2
  39.                 pointA.x = newValue.x - lengthY
  40.                 pointA.y = newValue.y + lengthY
  41.                 pointB.x = newValue.x + lengthY
  42.                 pointB.y = newValue.y - lengthY
  43.             }
  44.         }
  45.     }
  46.    
  47.     var length: Double {
  48.             return sqrt(pow((pointB.y - pointA.y), 2) +
  49.                         pow((pointB.x - pointA.x), 2))
  50.        
  51.     }
  52. }
  53.  
  54. var newSegment = Segment(pointA: Point(x: 1, y: 6),
  55.                          pointB: Point(x: 5, y: 2))
  56.  
  57. newSegment.midPoint = Point(x: 11, y: 4)
  58.  
  59. print(newSegment.pointA)
  60. print(newSegment.pointB)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement