Автор Тема: Два отрезка на плоскости заданы координатами своих концов...C#  (Прочитано 4685 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BBFSpirit

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Доброго времени суток!
Подскажите где я запарился пожалуйста?


1.class Points { public int x,y;
        public Points(int _x, int _y) {x=_x; y=_y;} }
 //функция для проверки пересечения, т.е. имеют общую точку...
 
 static int my(Points a, Points b, Points t) {
 return t.x*(b.y-a.y)+t.y*(a.x-b.x)+a.y*b.x-a.x*b.y;
}
 
string res = "не имеют общие точки";//результат проверки
 
int x1_AB=0,y1_AB=0,x2_AB=0,y2_AB=0,x1_CD=0,y1_CD=0,x2_CD=0,y2_CD=0;
 
    Console.Write("Первый отрезок AB\n");
    Console.Write("Введите координату Х для точки A: ");
    x1_AB = Convert.ToInt32(Console.ReadLine());
    Console.Write("Введите координату Y для точки A: ");
    y1_AB = Convert.ToInt32(Console.ReadLine());
    Console.Write("Введите координату Х для точки B: ");
    x2_AB = Convert.ToInt32(Console.ReadLine());
    Console.Write("Введите координату Y для точки B: ");
    y2_AB = Convert.ToInt32(Console.ReadLine());
 
    Console.Write("Первый отрезок CD\n");
    Console.Write("Введите координату Х для точки C: ");
    x1_CD = Convert.ToInt32(Console.ReadLine());
    Console.Write("Введите координату Y для точки C: ");
    y1_CD = Convert.ToInt32(Console.ReadLine());
    Console.Write("Введите координату Х для точки D: ");
    x2_CD = Convert.ToInt32(Console.ReadLine());
    Console.Write("Введите координату Y для точки D: ");
    y2_CD = Convert.ToInt32(Console.ReadLine());
 
Points A = new Points(x1_AB, y1_AB);
Points B = new Points(x2_AB, y2_AB);
Points C = new Points(x1_CD, y1_CD);
Points D = new Points(x2_CD, y2_CD);
 
if ((my(A,B,C)*my(A,B,D)<0 && my(C,D,A)*my(C,D,B)<0)||(A.x==C.x && A.y==C.y && B.x==D.x && B.y==D.y))
res = "имеют общие точки";
 
Console.Write("Отрезки AB и CD " + res+"\n");
        }




2.{
            Random rnd = new Random();
 
            int len_arr = 10;
            int[] arr = new int[len_arr];
          
            for (int i = 0; i < arr.Length; i++)
            {   byte[] bytes = new byte[1];
                rnd.NextBytes(bytes);
                arr[i] = bytes[0];
            }
 
          
            for (int i = 0; i < len_arr; i++)
            Console.Write(" " + arr[i]);
            Console.Write("\n");
          
  
            for (int i = 0; i < len_arr/2; i++) {
                int temp = arr[i];
                arr[i] = arr[len_arr - 1 - i];
                arr[len_arr - 1 - i] = temp;
            }
            // вывод массива
            for (int i = 0; i < len_arr; i++)
            Console.Write(" " + arr[i]);
            Console.Write("\n");
        }

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
1. Находим точку пересечения двух прямых. Если по любой координате
точка пересечения внути одного и другого отрезков - да, инче - нет.
2. Результат работы второй? Кажется правильно.