Я не могу получить часть вертикальной линии/горизонтальной линии, а также эта точка не существует. Я пробовал использовать операторы if, но все еще не могу сделать это правильно
1. наклон m прямой между двумя точками (x1, y1) и (x2, y2) задается формулой
2 1
2 1
х х
у у
икс
y
м
Напишите программу, которая запросит у пользователя координаты двух точек и сделает следующее:
Determine определите, образуют ли две точки линию.
Detect определите, является ли линия горизонтальной,и предупредите пользователя.
Detect определите, является ли линия вертикальной,и предупредите пользователя.
Calculate вычислите наклон отрезка прямой, соединяющего их, если он не равен 0 или не определен.
Используйте переменные двойного типа для хранения координат и вычислений, сделанных из них.
Образец Выполнения:
Введите координаты точки 1 (x, y): 3 8
Введите координаты точки 2 (x, y): 3 8
Внимание! Эти точки не образуют линии.
Образец Выполнения:
Введите координаты точки 1 (x, y): 3 3
Введите координаты точки 2( x, y): 7 8
Наклон линии равен 1,25
Образец Выполнения:
Введите координаты точки 1 (x, y): -2 9
Введите координаты точки 2 (x, y): 4 9
Внимание! Линия горизонтальна.
Образец Выполнения:
Введите координаты точки 1( x, y): 5 -6
Введите координаты точки 2 (x, y): 5 9
Внимание! Линия вертикальная.
Затем измените программу, чтобы напечатать уравнение линии в форме наклона-перехвата (
г МХ б
). Используйте
соответствующие “y = “и ” x = " для горизонтальных и вертикальных линий соответственно.
Образец Выполнения:
Введите координаты точки 1 (x, y): 3 5
Введите координаты точки 2 (x, y): 5 8
Наклон линии составляет 1,50
Склон-перехват форме г = 1.50 х + .50
Что я уже пробовал:
#include <stdio.h> /* function main begins program execution */ int main(void) { float slope, intercept; float x1, y1, x2, y2, x3, y3; float dx, dy; /*coordinate phase*/ printf("Enter the coordinates of point 1: "); /* prompt for input */ scanf("%f", &x1); /*coordinate from user*/ scanf("%f", &y1); /*coordinate from user*/ printf("Enter the coordinates of point 2: "); /* prompt for input */ scanf("%f", &x2); /*coordinate from user*/ scanf("%f", &y2); /*coordinate from user*/ printf("\n"); printf("\n"); /*slope phase*/ dx = x2 - x1; dy = y2 - y1; slope = dy / dx; printf("The slope of the line is = %.5f", slope); /* display result */ printf("\n"); printf("\n"); /*y intercept phase*/ /* y = mx + b*/ /*intercept b = y - m*/ intercept = y1 - slope * x1; /*line equation phase*/ printf("The slope intercept form is: y = %.5fx %c %.5f\n", slope, (intercept < 0) ? ' ' : '+', intercept); /* display result */ printf("\n"); printf("\n"); return 0; /* indicate that program ended successfully */ } // end function main *
Rick York
Этот раздел предназначен для того, чтобы задавать вопросы, так в чем же заключается Ваш вопрос?
Rick York
Один комментарий: следите, если x1 равно x2. Это приведет к делению на ноль, а это плохо.
«_Superman_»
Я выполнил ваш код и получил результат, приведенный ниже.
Какой у вас вопрос?
Введите координаты точки 1: 2.3
4.5
Введите координаты точки 2: 6.7
8.6
Наклон линии равен = 0,93182
Перехват форма угловым коэффициентом имеет вид: г = 0.93182 х + 2.35682