Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- /*
- Дисциплина: "Программирование"
- Группа: БПИ176/1
- Студент: Коротков Даниил Александрович
- Вариант: 1.2
- */
- namespace SEMINAR5
- {
- class Program
- {
- /// <summary>
- /// Input rectangle coordinates
- /// </summary>
- /// <param name="mes">Message to user</param>
- /// <returns>Double array with coordinates</returns>
- static double[] GetRect(string mes)
- {
- string[] inputs;
- double[] output = new double[4];
- bool flag = false;
- do
- {
- Console.Clear();
- Console.Write(mes);
- inputs = Console.ReadLine().Split().ToArray();
- //checking
- if (inputs.Length != 4) flag = true;
- else
- {
- for (int i = 0; i < 4; i++)
- {
- flag = !(double.TryParse(inputs[i], out output[i]));
- if (flag) break;
- }
- }
- }
- while (flag);
- return output;
- }
- static void Main(string[] args)
- {
- do
- {
- //output data
- double cross;
- double length;
- double square;
- List<int> num = new List<int>();
- //inputs
- double[] Rect1 = GetRect("Input first rect coordinates: ");
- double[] Rect2 = GetRect("Input second rect coordinates: ");
- //Realisation
- Console.WriteLine($"Rects are in same quarter: {FindPosition(Rect1, Rect2, out num)}");
- if(FindPosition(Rect1, Rect2, out num))
- {
- Console.Write("These are: ");
- foreach(int elem in num) Console.Write($" {elem}");
- Console.WriteLine();
- }
- Console.WriteLine($"Rect1 is a square: {IsSquare(Rect1, out cross)}");
- if (IsSquare(Rect1, out cross)) Console.WriteLine($"Cross is: {cross}");
- Console.WriteLine();
- Console.WriteLine($"Rect2 is a square: {IsSquare(Rect2, out cross)}");
- if (IsSquare(Rect2, out cross)) Console.WriteLine($"Cross is: {cross}");
- Console.WriteLine();
- GetRectInfo(Rect1,out square, out length, out cross);
- Console.WriteLine($"Rest1 params:\nSquare = {square}\nLength = {length}\nCross = {cross}");
- Console.WriteLine();
- GetRectInfo(Rect2, out square, out length, out cross);
- Console.WriteLine($"Rest2 params:\nSquare = {square}\nLength = {length}\nCross = {cross}");
- Console.WriteLine();
- Console.WriteLine("Press ESC to Quit");
- }
- while (Console.ReadKey().Key != ConsoleKey.Escape);
- }
- /// <summary>
- /// Are the Rects in same quarters?
- /// </summary>
- /// <param name="Rect1">First rects coordinates</param>
- /// <param name="Rect2">Second Rect coordinates</param>
- /// <param name="num">out var for numbers of quarters</param>
- /// <returns></returns>
- static bool FindPosition(double[] Rect1, double[] Rect2, out List<int> num)
- {
- num = new List<int>();
- bool flag = false;
- for(int i=1;i<=4;i++)
- {
- if (GetQuarter(Rect1).Contains(i) && GetQuarter(Rect2).Contains(i)) num.Add(i);
- flag = true;
- }
- if (flag) return true;
- return false;
- }
- /// <summary>
- /// Get a list of quarters for rectangle
- /// </summary>
- /// <param name="x">Coordinates of rectangle</param>
- /// <returns>True/False</returns>
- static List<int> GetQuarter(double[] x)
- {
- List<int> answer = new List<int>();
- if (x[2] > 0 && x[3] > 0) answer.Add(1);
- if (x[0] < 0 && x[3] > 0) answer.Add(2);
- if (x[0] < 0 && x[1] < 0) answer.Add(3);
- if (x[2] > 0 && x[1] < 0) answer.Add(4);
- return answer;
- }
- /// <summary>
- /// Is the rect a suare?
- /// </summary>
- /// <param name="x">coordinates of rect</param>
- /// <param name="cross">out var for cross</param>
- /// <returns>True/False></returns>
- static bool IsSquare(double[] x, out double cross)
- {
- bool flag = false;
- if (x[2] - x[0] == x[3] - x[1]) flag = true;
- if (flag) { cross = (x[2] - x[0]) * Math.Sqrt(2); return true; }
- cross = 0;
- return false;
- }
- /// <summary>
- /// Get full info for the rect
- /// </summary>
- /// <param name="x">coordinates of rect</param>
- /// <param name="square">out var square</param>
- /// <param name="length">out var length</param>
- /// <param name="cross">out var cross</param>
- static void GetRectInfo(double[] x, out double square, out double length, out double cross)
- {
- double weight = x[2] - x[0];
- double height = x[3] - x[1];
- square = weight * height;
- length = 2 * (weight + height);
- cross = Math.Sqrt(Math.Pow(weight, 2) + Math.Pow(height, 2));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement