Advertisement
Guest User

Untitled

a guest
Oct 20th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. /*
  8. Дисциплина: "Программирование"
  9. Группа: БПИ176/1
  10. Студент: Коротков Даниил Александрович
  11. Вариант: 1.2
  12. */
  13.  
  14. namespace SEMINAR5
  15. {
  16. class Program
  17. {
  18. /// <summary>
  19. /// Input rectangle coordinates
  20. /// </summary>
  21. /// <param name="mes">Message to user</param>
  22. /// <returns>Double array with coordinates</returns>
  23. static double[] GetRect(string mes)
  24. {
  25. string[] inputs;
  26. double[] output = new double[4];
  27. bool flag = false;
  28. do
  29. {
  30. Console.Clear();
  31. Console.Write(mes);
  32. inputs = Console.ReadLine().Split().ToArray();
  33. //checking
  34. if (inputs.Length != 4) flag = true;
  35. else
  36. {
  37. for (int i = 0; i < 4; i++)
  38. {
  39. flag = !(double.TryParse(inputs[i], out output[i]));
  40. if (flag) break;
  41. }
  42. }
  43. }
  44. while (flag);
  45. return output;
  46. }
  47.  
  48.  
  49. static void Main(string[] args)
  50. {
  51. do
  52. {
  53. //output data
  54. double cross;
  55. double length;
  56. double square;
  57. List<int> num = new List<int>();
  58.  
  59. //inputs
  60. double[] Rect1 = GetRect("Input first rect coordinates: ");
  61. double[] Rect2 = GetRect("Input second rect coordinates: ");
  62.  
  63. //Realisation
  64. Console.WriteLine($"Rects are in same quarter: {FindPosition(Rect1, Rect2, out num)}");
  65. if(FindPosition(Rect1, Rect2, out num))
  66. {
  67. Console.Write("These are: ");
  68. foreach(int elem in num) Console.Write($" {elem}");
  69. Console.WriteLine();
  70. }
  71. Console.WriteLine($"Rect1 is a square: {IsSquare(Rect1, out cross)}");
  72. if (IsSquare(Rect1, out cross)) Console.WriteLine($"Cross is: {cross}");
  73. Console.WriteLine();
  74. Console.WriteLine($"Rect2 is a square: {IsSquare(Rect2, out cross)}");
  75. if (IsSquare(Rect2, out cross)) Console.WriteLine($"Cross is: {cross}");
  76. Console.WriteLine();
  77. GetRectInfo(Rect1,out square, out length, out cross);
  78. Console.WriteLine($"Rest1 params:\nSquare = {square}\nLength = {length}\nCross = {cross}");
  79. Console.WriteLine();
  80. GetRectInfo(Rect2, out square, out length, out cross);
  81. Console.WriteLine($"Rest2 params:\nSquare = {square}\nLength = {length}\nCross = {cross}");
  82. Console.WriteLine();
  83.  
  84. Console.WriteLine("Press ESC to Quit");
  85. }
  86. while (Console.ReadKey().Key != ConsoleKey.Escape);
  87. }
  88. /// <summary>
  89. /// Are the Rects in same quarters?
  90. /// </summary>
  91. /// <param name="Rect1">First rects coordinates</param>
  92. /// <param name="Rect2">Second Rect coordinates</param>
  93. /// <param name="num">out var for numbers of quarters</param>
  94. /// <returns></returns>
  95. static bool FindPosition(double[] Rect1, double[] Rect2, out List<int> num)
  96. {
  97. num = new List<int>();
  98. bool flag = false;
  99. for(int i=1;i<=4;i++)
  100. {
  101. if (GetQuarter(Rect1).Contains(i) && GetQuarter(Rect2).Contains(i)) num.Add(i);
  102. flag = true;
  103. }
  104. if (flag) return true;
  105. return false;
  106.  
  107. }
  108. /// <summary>
  109. /// Get a list of quarters for rectangle
  110. /// </summary>
  111. /// <param name="x">Coordinates of rectangle</param>
  112. /// <returns>True/False</returns>
  113. static List<int> GetQuarter(double[] x)
  114. {
  115. List<int> answer = new List<int>();
  116. if (x[2] > 0 && x[3] > 0) answer.Add(1);
  117. if (x[0] < 0 && x[3] > 0) answer.Add(2);
  118. if (x[0] < 0 && x[1] < 0) answer.Add(3);
  119. if (x[2] > 0 && x[1] < 0) answer.Add(4);
  120. return answer;
  121. }
  122. /// <summary>
  123. /// Is the rect a suare?
  124. /// </summary>
  125. /// <param name="x">coordinates of rect</param>
  126. /// <param name="cross">out var for cross</param>
  127. /// <returns>True/False></returns>
  128. static bool IsSquare(double[] x, out double cross)
  129. {
  130. bool flag = false;
  131. if (x[2] - x[0] == x[3] - x[1]) flag = true;
  132. if (flag) { cross = (x[2] - x[0]) * Math.Sqrt(2); return true; }
  133. cross = 0;
  134. return false;
  135. }
  136. /// <summary>
  137. /// Get full info for the rect
  138. /// </summary>
  139. /// <param name="x">coordinates of rect</param>
  140. /// <param name="square">out var square</param>
  141. /// <param name="length">out var length</param>
  142. /// <param name="cross">out var cross</param>
  143. static void GetRectInfo(double[] x, out double square, out double length, out double cross)
  144. {
  145. double weight = x[2] - x[0];
  146. double height = x[3] - x[1];
  147. square = weight * height;
  148. length = 2 * (weight + height);
  149. cross = Math.Sqrt(Math.Pow(weight, 2) + Math.Pow(height, 2));
  150. }
  151.  
  152. }
  153.  
  154.  
  155.  
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement