Суббота, 20.04.2024, 14:14 | RSS | Приветствую Вас Гость
Главная | Регистрация | Вход
Меню сайта
Категории раздела
Разное [10]
Решения задач (студентам) [9]
PC Игры - кодинг [2]
Python [1]
PHP, Mysql [1]
HTML, CSS, Javascript [1]
Scilab [1]
Поиск
Опрос
Какой браузер вы сейчас используете?
Всего ответов: 51
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Решения задач (студентам)

Уравнение прямой, проходящей через две заданные точки
Задача поставлена следующим образом.
Составить программу, которая построит уравнение прямой, проходящей через две заданные точки и выведет угловой коэффициент и само уравнение.

Как и в предыдущих статьях, данная задача чисто математического характера и требует, в первую очередь, математического ее решения. Для решения данной задачи потребуется формула следующего вида.

(y-y1)/(y2-y1) = (x-x1)/(x2-x1)

Это, собственно, и есть уравнение прямой, проходящей через две точки с координатами (x1,y1) и (x2, y2). Но, как видите, это уравнение имеет не "привычную" форму и в нем не используется угловой коэффициент. То есть угловой коэффициент потребуется вычислить. Вычисляется он по простой формуле: k = (y2-y1)/(x2-x1). По сути это есть тангенс угла, образующегося между прямой и осью Ox координатной плоскости.

Теперь поясню, что я имел под привычным видом. Под привычным видом я имел ввиду представление уравнения с использованием углового коэффициента.

y = k*x + p

Здесь "p" это свободный член, который должен быть постоянным числом. К несчастью, его тоже придется вычислять. В первую очередь возникает вопрос "откуда". А прям из этого же уравнения. Предположим, что "k" уже известно, нехватает "x" и "y". Ими могут быть координаты любой точки, лежащей на данной прямой (как упоминалось выше, "p" - постоянное число). Чтобы не заморачиваться, можно взять координаты одной из двух заданных точек.

p = y1 - k*x1

Вот, собственно, и все. Остальное - дело техники.

Код программы на C.

#include <stdio.h>
#include <conio.h>

void main()
{
  float x1,y1,x2,y2,k,p;
  char command;
  while (1)
  {
    clrscr();
    // ввод координат первой точки
    printf("Enter coordinates of 2 points of the line\nCoordinates of 1st point:\nx1>> ");
    scanf("%f", &x1);
    printf("y1>> ");
    scanf("%f", &y1);
    // ввод координат второй точки
    printf("Coordinates of 2nd point:\nx2>> ");
    scanf("%f", &x2);
    printf("y2>> ");
    scanf("%f", &y2);
    k = (y2-y1)/(x2-x1); // угловой коэффициент
    p = y1 - k * x1; // свободный член
    printf("k = %.4f\n", k); // вывод k
    printf("p = %.4f\n", p); // вывод p
    // вывод уравнения y = kx + p
    printf("The straight line equation:\ny = %.4fx ", k);
    if (p < 0) printf("- %.4f\n", -p); // вывод -p
    else printf("+ %.4f\n", p); // вывод +p
    printf("\nPress 'r' for retry or press another key for exit...");
    command = getch();
    if (command != 'r') break;
  }
}

Примечания.

Конструкция
while (1)
{
    ...
    printf("\nPress 'r' for retry or press another key for exit...");
  command = getch();
  if (command != 'r') break;
}
нужна для того, чтобы после вывода уравнения по нажатию клавиши "r" программа прогналась по новой (рекомендую использовать данную конструкцию во всех программах, особенно тех, которые сдаются на проверку преподавателю, так как она позволит без повторного перезапуска гонять программу по тестам, дабы полностью удовлетворить любопытство проверяющего).

Конструкция
if (p < 0) printf("- %.4f\n", -p); // вывод -p
else printf("+ %.4f\n", p); // вывод +p
здесь используется для вывода свободного члена с нужным (единственным!) знаком. То есть, если "p" положительный - выведется "p" с плюсом, если отрицательный - выведется "p" с минусом (то есть, к примеру, не "+ -15", а "-15").

Поделиться ссылкой в соц. сетях:

Категория: Решения задач (студентам) | Добавил: =Sanek= (04.10.2011)
Просмотров: 3675 | Теги: C/C++, уравнение прямой, угловой коэффициент | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

© 2024 raznocoding.do.am