Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 118

Вывести точки пересечения прямых с осями

27.10.2019, 21:30. Показов 2798. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, не могу дойти до решения задания.
Дано так:
Класс - Прямая (y = ax+b)
Члены класса - a,b коэффициенты уравнения прямой.
Методы - Конструктор, метод вывода уравнения прямой, определение точек пересечения с осями.
Исходные данные - прямая AB: y1=a1*x+b1 прямая CD : y2=a2*x+b2
Результаты - вывести точки пересечения прямых с осями. Проверить их перпендикулярность, найти и вывести угол между ними.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 class Pryamaya
    {
        double a1, b1,a2, b2, y1, y2, x, AB, CD;
        
 
        public Pryamaya()
        {
            Console.WriteLine("Введите  а1 ");
            a1 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите  b1 ");
            b1 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите  а2 ");
            a2 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите  b2 ");
            b2 = Convert.ToDouble(Console.ReadLine());
        }
        public static void VivodUravneniya(double AB, double CD, double a1, double b1, double y1, double y2, double x, double a2, double b2)
        {
            AB = y1 = a1 * x + b1;
            CD = y2 = a2 * x + b2;
        }
        public static void Point()
        {
 
        }
    }
У меня вопрос, как по введенным данным сделать проверку на пересечение, и в случае пересечения - вывести точки, в которых прямые пересекаются? И что такое X, откуда мне его брать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2019, 21:30
Ответы с готовыми решениями:

Как определить точки пересечения двух прямых?
Не врублюсь как определить точки персечения 2 прямых заданных уравнением ax+by+c=0; 1)пересекаются в одной точке 2)параллельны 3)не...

На графике отметить асимптоты, точки экстремума, точки перегиба, точки пересечения с осями координат
Что-то выходит не совсем правильный график. clc; clear all; close all; l = -10; r = 10; N = 1000;

Точки пересечения с осями координат
Необходимо найти точки пересечения с осями координат функции: y=sin(x)*sin(x)+cos(x). Я знаю, что таких точек бесконечное множество,...

15
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
27.10.2019, 21:49
ShaRaKos, не густо....
как с алгеброй у тебя?
0
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 118
27.10.2019, 23:41  [ТС]
User-ganz, слабовато, на самом деле
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
28.10.2019, 01:20
ShaRaKos, как бы ты решил это на бумаге? например в тетради(ответ,"я ваще не знаю, я кинул задачу, мне сказали тут решат и ничего ни думать, ни решать не хочу" не канает)?
0
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 118
28.10.2019, 16:01  [ТС]
Diamante, да не в этом дело, я сути задания не понял, какие переменные мне с клавиатуры вводить. нужно ли мне находить a1 a2 b1 b2, или вводить их с клавиатуры, что такое x, такого плана.
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
28.10.2019, 16:53
ShaRaKos, пересечение с осью х - значит у=0
с осью у - х=0
неужели теперь не только программирование преподают, когда ни лекций, ни семинаров и сразу задание дают, но и математику?
0
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 118
28.10.2019, 17:15  [ТС]
Diamante, у меня в заведении очень халатно относятся к преподаванию математики, да и кроме как в заданиях по программированию из колледжа она почти не используется, исходя из моей практики.
Я так и не понял, мне даны исходные данные : прямая AB: y1=a1*x+b1 прямая CD : y2=a2*x+b2
какие из переменных я должен вводить из клавиатуры?

Добавлено через 7 минут
Diamante, я сам метод знаю как сделать, просто я не понимаю какими данными там оперировать
0
 Аватар для jester
352 / 247 / 76
Регистрация: 18.03.2016
Сообщений: 979
28.10.2019, 17:38
ShaRaKos, и в школе тоже не преподавали... халатность повсюду

Цитата Сообщение от ShaRaKos Посмотреть сообщение
какие из переменных я должен вводить из клавиатуры?
Цитата Сообщение от ShaRaKos Посмотреть сообщение
Члены класса - a,b коэффициенты уравнения прямой.
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
28.10.2019, 17:50
Вам же сказали
Цитата Сообщение от Diamante Посмотреть сообщение
пересечение с осью х - значит у=0
с осью у - х=0
Если нет проблем с написанием метода, даже не знаю что здесь подсказывать)) Ну если только просто код написать))
0
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 118
28.10.2019, 20:25  [ТС]
Sanya_sa, да вот не знаю, как-то сложно мне в этом разобраться.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 class Program
    {
 
        static void Main(string[] args)
        {
            Pryamaya pr = new Pryamaya();
            pr.Point(2,3,4,5,6,7,8,9);
            pr.Res();
            Console.ReadKey();
        }
 
 
 
    }
    class Pryamaya
    {
 
       
        public Pryamaya()
        {
            
        }
        public void Point(double a1, double a2,double b1,double b2, double c1, double c2, double x , double y)
        {
            double d = a1 * b1 - a2 * b1;
            x = (b1 * c2 - b2 * c1) / d;
            y = (a2 * c1 - a1 * c2) / d;
            
 
            
         
 
 
 
 
        }
        
        public static void VivodUravneniya()
        {
            
        }
       public int Res()
        {
            double a1, a2, b1, b2, c1, c2;
            double x1, y1, x2, y2, x3, y3, x4, y4, x,y;
            
            Console.WriteLine("Введите данные первой линии: точка 1, точка 2");
            x1 = Convert.ToDouble(Console.ReadLine());
            y1 = Convert.ToDouble(Console.ReadLine());
            x2 = Convert.ToDouble(Console.ReadLine());
            y2 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите данные второй линии: точка 1, точка 2");
            x3 = Convert.ToDouble(Console.ReadLine());
            y3 = Convert.ToDouble(Console.ReadLine());
            x4 = Convert.ToDouble(Console.ReadLine());
            y4 = Convert.ToDouble(Console.ReadLine());
            a1 = y1 - y2;
            b1 = x2 - x1;
            c1 = x1 * y2 - x2 * y1;
            a2 = y3 - y4;
            b2 = x4 - x3;
            c2 = x3 * y4 - x4 * y3;
            Point(a1,a2,b1,b2,c1,c2,x,y);             // Агрится тут
            Console.WriteLine("точки пересечения прямой " + x + " " + y);
 
 
            return 0;
        }
выводит ошибку: использование локальной переменной x, y, которым не присвоено значение. Что не так?

Добавлено через 19 минут
Sanya_sa, А, с этим разобрался, другое интересует. У меня в точке входа - Point() должно принимать значения для a1,a2,b1,b2,c1,c2,x,y из метода Res, так вот, как это реализовать? Программа работает, если я в Point() пишу значения для каждой переменной : pr.Point(1,2,3,2,3,4....); Но мне нужно чтобы оно по ходу программы принимала нужное значение в переменную.
0
 Аватар для jester
352 / 247 / 76
Регистрация: 18.03.2016
Сообщений: 979
28.10.2019, 22:15
ShaRaKos, https://metanit.com/sharp/tutorial/1.5.php
0
418 / 316 / 241
Регистрация: 29.05.2010
Сообщений: 796
Записей в блоге: 1
29.10.2019, 12:23
ShaRaKos,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Text;
 
namespace ConsoleApplication4
{
    public static class Program
    {
        public static void Main(string[] args)
        {
            var l1 = new Line(3, 5);
            Console.WriteLine(l1);
            Console.WriteLine($"OX [{l1.Ox}] OY[{l1.Oy}]");
 
            Console.WriteLine();
 
            var l2 = new Line(2, 6);
            Console.WriteLine(l2);
            Console.WriteLine($"OX [{l2.Ox}] OY[{l2.Oy}]");
 
            Console.WriteLine();
 
            Console.WriteLine($"Angle:{Line.Angle(l1, l2)}");
 
            Console.WriteLine("Perpendicular:{0}",Line.Perpend(l1,l2));
 
 
 
 
        }
    }
 
    class Line
    {
        public int A { get; set; }
        public int B { get; set; }
 
        public Line(int a, int b)
        {
            A = a;
            B = b;
        }
        public string Ox => $"{(double)-B / A};{0}";
 
        public string Oy => $"{0};{B}";
 
 
        public override string ToString()
        {
            if (A == 0 && B == 0)
                return "y=0";
 
            var sb = new StringBuilder();
            sb.Append("y=");
 
            if (A != 0)
            {
                if (A < 0)
                    sb.Append('-');
                if (Math.Abs(A) != 1)
                    sb.Append(Math.Abs(A));
                sb.Append('x');
            }
 
 
            if (B != 0)
            {
                if (B > 0)
                {
                    if (A != 0)
                    {
                        sb.Append('+');
                    }
                    sb.Append(B);
                }
                else sb.Append(B);
            }
 
 
            return sb.ToString();
 
        }
 
        public static double Angle(Line l1, Line l2)
        {
            // http://hystory-for-vki.narod.ru/index/0-36
 
            double a = Math.Abs(l2.A - l1.A) / (double)(1 + l1.A * l2.A);
 
            var yrad = Math.Atan(a);
            return yrad * 180 / Math.PI;
        }
 
        public static bool Perpend(Line l1, Line l2)
        {
            return l1.A == -1 / l2.A;
        }
    }
}
Добавлено через 6 минут
нужно брать модуль всего
Цитата Сообщение от kypiwindy Посмотреть сообщение
double a = Math.Abs(l2.A - l1.A) / (double)(1 + l1.A * l2.A);
C#
1
double a = Math.Abs((l2.A - l1.A) / (double)(1 + l1.A * l2.A));
0
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 118
29.10.2019, 15:54  [ТС]
kypiwindy, спасибо, посоветуйте что-либо почитать по .NET, хочу знать больше.
0
 Аватар для jester
352 / 247 / 76
Регистрация: 18.03.2016
Сообщений: 979
29.10.2019, 16:20
ShaRaKos, чем тебя не устраивает метанит?
Цитата Сообщение от ShaRaKos Посмотреть сообщение
хочу знать больше
ну для этого нужно что то делать
0
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 118
29.10.2019, 17:00  [ТС]
jester, я делаю проги в WF, получается вроде не плохо, просто мне больше нужно знать теории в работе с методами, массивами, да и вообще, я бы основы с самого начала из хорошего источника почитал.
0
 Аватар для jester
352 / 247 / 76
Регистрация: 18.03.2016
Сообщений: 979
29.10.2019, 17:14
ShaRaKos, мне бы тоже чего нибудь хорошего почитать. из хорошего источника
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2019, 17:14
Помогаю со студенческими работами здесь

Точки пересечения графика функции с осями координат
Нужно найти точки пересечения графика функции с осями координат. Пишу y(x)=x+2atan(x)solve,x -&gt; solve выделяется красным, хотя делаю...

Найти точки пересечения прямой с осями координат
Найти точки пересечения прямой a * x + b * y + c = 0 с осями координат, или выдать соответствующее сообщение, если они не пересекаются ...

Найти точки пересечения графика с осями координат
Найти точки пересечения графика с осями координат и вычислить корень уравнения f(x)= 0 с максимально возможной точностью

Найти точки пересечения прямых проходящих через заданные точки
Всем привет! Прошу помощи в решении задачи: Дана система координат X:Y (по 25 точек в каждую сторону) В ней расположен ряд точек в...

Реализовать функции получения точки пересечения прямых, прямой, проходящей через две точки
Здравствуйте, программисты! Мне снова попалась задача, условие которой я не могу понять и очень нуждаюсь в Вашем совете. Коды программы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru