Advertisement
mikolajmki

swift_na5

Jan 22nd, 2023
1,457
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 5.54 KB | None | 0 0
  1. /**
  2.  
  3.                             Online Swift Compiler.
  4.                 Code, Compile, Run and Debug Swift script online.
  5. Write your code in this editor and press "Run" button to execute it.
  6.  
  7. */
  8.  
  9. import Foundation;
  10.  
  11. print("Hello World")
  12.  
  13. class Punkt {
  14.     var x: Int;
  15.     var y: Int;
  16.    
  17.     init(x: Int, y: Int) {
  18.         self.x = x;
  19.         self.y = y;
  20.     }
  21. }
  22.  
  23. class Dane2P {
  24.     var AB: [Punkt] = [];
  25.     init(x1: Int, y1: Int, x2: Int, y2: Int) {
  26.         self.AB.append(Punkt(x: x1, y: y1))
  27.         self.AB.append(Punkt(x: x2, y: y2))
  28.     }
  29.    
  30.     func printDane() {
  31.         for p in AB {
  32.             print(p.x, p.y)
  33.         }
  34.     }
  35.    
  36.     func dlugoscOdcinka(p1: Punkt, p2: Punkt) -> Double {
  37.        
  38.         return sqrt(pow(Double(p2.x - p1.x), 2) + pow(Double(p2.y - p1.y), 2) );
  39.     }
  40.    
  41.     func wspolrzedneWektora(p1: Punkt, p2: Punkt) -> [Int] {
  42.        
  43.         return [p2.x - p1.x, p2.y - p1.y];
  44.     }
  45.    
  46.     func czyTrojkat(p3: Punkt) -> Bool {
  47.         let p1: Punkt = self.AB[0];
  48.         let p2: Punkt = self.AB[1];
  49.        
  50.         let len1: Double = dlugoscOdcinka(p1: p1, p2: p2);
  51.         let len2: Double = dlugoscOdcinka(p1: p2, p2: p3);
  52.         let len3: Double = dlugoscOdcinka(p1: p1, p2: p3);
  53.        
  54.         print(len1, len2, len3)
  55.        
  56.         return !((len1 + len2 == len3) || (len1 + len3 == len2) || (len2 + len3 == len1))
  57.     }
  58. }
  59.  
  60. class Dane3P: Dane2P {
  61.     var C: Punkt;
  62.    
  63.     init(x1: Int, y1: Int, x2: Int, y2: Int, x3: Int, y3: Int) {
  64.         self.C = Punkt(x: x3, y: y3);
  65.         super.init(x1: x1, y1: y1, x2: x2, y2: y2);
  66.     }
  67.    
  68.     override func printDane() {
  69.         print("A[\(self.AB[0].x), \(self.AB[0].y)]");
  70.         print("B[\(self.AB[1].x), \(self.AB[1].y)]");
  71.         print("C[\(self.C.x), \(self.C.y)]");
  72.     }
  73.    
  74.     func obliczCosa(w1: [Int], w2: [Int]) -> Double {
  75.         let licznik = Double(w1[0] * w2[0] + w1[1] * w2[1]);
  76.         let mianownik = sqrt(Double(w1[0] * w1[0] + w1[1] * w1[1])) * sqrt(Double(w2[0] * w2[0] + w2[1] * w2[1]));
  77.         return licznik / mianownik;
  78.     }
  79.    
  80.     func czyWspolliniowe() -> Bool {
  81.         let p1: Punkt = self.AB[0];
  82.         let p2: Punkt = self.AB[1];
  83.         let p3: Punkt = self.C
  84.        
  85.         let len1: Double = dlugoscOdcinka(p1: p1, p2: p2);
  86.         let len2: Double = dlugoscOdcinka(p1: p2, p2: p3);
  87.         let len3: Double = dlugoscOdcinka(p1: p1, p2: p3);
  88.        
  89.         // print(len1, len2, len3);
  90.        
  91.         return ((len1 + len2 == len3) || (len1 + len3 == len2) || (len2 + len3 == len1))
  92.     }
  93.    
  94.     func rodzajTrojkata() -> String {
  95.         var katy: [Double] = katyPomiedzy();
  96.         var max: Double = katy[0];
  97.        
  98.         for kat in katy {
  99.             if (kat > max) {
  100.                 max = kat;
  101.             }    
  102.         }
  103.        
  104.         if (max < 90) {
  105.             return "ostrokatny";
  106.         }
  107.         else if (max ==  90) {
  108.             return "prostokatny";
  109.         }
  110.         else {
  111.             return "rozwartokatny";
  112.         }
  113.     }
  114.    
  115.     func katyPomiedzy() -> [Double] {
  116.         var katy: [Double] = [];
  117.        
  118.         let p1: Punkt = self.AB[0];
  119.         let p2: Punkt = self.AB[1];
  120.         let p3: Punkt = self.C
  121.        
  122.         let w1: [Int] = wspolrzedneWektora(p1: p2, p2: p1);
  123.         let w2: [Int] = wspolrzedneWektora(p1: p2, p2: p3);
  124.         let w3: [Int] = wspolrzedneWektora(p1: p1, p2: p3);
  125.        
  126.         let wektory: [[[Int]]] = [[w1, w2], [w2, w3], [w1, w3]];
  127.        
  128.         for w in wektory {
  129.             let cosa: Double = obliczCosa(w1: w[0], w2: w[1]);
  130.             // print(cosa)
  131.             katy.append(acos(cosa) * 180.0 / Double.pi);
  132.         }
  133.         katy[2] = 180 - katy[2];
  134.         for kat in katy {
  135.             print("\(kat) stopni");
  136.         }
  137.         return katy;
  138.     }
  139. }
  140.  
  141. var d3pArr: [Dane3P] = [];
  142.  
  143. for _ in 0...5 {
  144.     var randArr: [Int] = []
  145.     for _ in 0...6 {
  146.         let rand: Int = Int.random(in: -10...10);
  147.         randArr.append(rand)
  148.     }
  149.     d3pArr.append(Dane3P(x1: randArr[0], y1: randArr[1], x2: randArr[2], y2: randArr[3], x3: randArr[4], y3: randArr[5]));
  150. }
  151.  
  152. // dla Dane3P
  153.  
  154. // for d3p in d3pArr {
  155. //     d3p.printDane();
  156. //     print(d3p.czyWspolliniowe());
  157. //     print(d3p.rodzajTrojkata());
  158. // }
  159.  
  160. for d3p in d3pArr {
  161.     print(" ");
  162.     let rodzaj = d3p.rodzajTrojkata();
  163.     if (rodzaj  == "ostrokatny") {
  164.         print(">>> Znaleziono <<<");
  165.         d3p.printDane();
  166.     }
  167.     print(rodzaj);
  168.     print(" ");
  169. }
  170.  
  171. // var d3p = Dane3P(x1: 2, y1: 3, x2: 4, y2: 1, x3: 6, y3: 2);
  172. // d3p.printDane();
  173. // print(d3p.czyWspolliniowe());
  174. // print(d3p.rodzajTrojkata());
  175. // d3p.katyPomiedzy();
  176.  
  177.  
  178. // dla Dane2P
  179.  
  180. // var d2p: [Dane2P] = [];
  181. // for _ in 0...5 {
  182. //     var randArr: [Int] = []
  183. //     for _ in 0...3 {
  184. //         let rand: Int = Int.random(in: -10...10);
  185. //         randArr.append(rand)
  186. //     }
  187. //     d2p.append(Dane2P(x1: randArr[0], y1: randArr[1], x2: randArr[2], y2: randArr[3]))
  188. // }
  189.  
  190. // for odc in d2p {
  191. //     odc.printDane();
  192. //     print(odc.dlugoscOdcinka(p1: odc.AB[0], p2: odc.AB[1]));
  193. //     print(odc.wspolrzedneWektora());
  194. //     print(odc.czyTrojkat(p3: d2p[3].AB[0]))
  195. // }
  196.  
  197. // for i in 0...4 {
  198. //     d2p[i].printDane()
  199. //     print(d2p[i].dlugoscOdcinka(p1: d2p[i].AB[0], p2: d2p[i].AB[1]));
  200. //     print(d2p[i].wspolrzedneWektora());
  201. //     for j in 0...1 {
  202. //         print(d2p[i].czyTrojkat(p3: d2p[i + 1].AB[j]));
  203. //     }
  204. // }
  205.    
  206. // d2p.printDane();
  207. // print(d2p.dlugoscOdcinka())
  208. // print(d2p.wspolrzedneWektora())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement