Вычислить координаты точки, наиболее удаленной от начала координат - C (СИ)
Формулировка задачи:
Добрый день!
Исправьте пожалуйста что не так)))
Условие:
По вводимым координатам трех точек А,В,С на плоскости вычислить координаты точки, наиболее удаленной от начала координат, используя собственную функцию определения расстояния заданной точки от начала координат.
Вот код:
P.S.но чувствую что он не совсем правильный (или совсем неправильный))
#include<stdio.h> #include<conio.h> void main() { int Sa,Sb,Sc,Xa,Ya,Xb,Yb,Xc,Yc; printf("\n vvedite koordinati tochki A:"); scanf("%f%f",&Xa,&Ya); printf("\n vvedite koordinati tochki B:"); scanf("%f%f",&Xb,&Yb); printf("\n vvedite koordinati tochki C:"); scanf("%f%f",&Xc,&Yc); Sa=(Xa,Ya); Sb=(Xb,Yb); Sc=(Xc,Yc); getch(); } int my Min(int x, int y); { return sqrt(x*x+y*y); }
Решение задачи: «Вычислить координаты точки, наиболее удаленной от начала координат»
textual
Листинг программы
#include <stdio.h> #include <math.h> double get_distance(double x, double y); int main() { double Sa,Sb,Sc,Xa,Ya,Xb,Yb,Xc,Yc; printf("\n Введите координаты точки A:"); scanf("%lf%lf",&Xa,&Ya); printf("\n Введите координаты точки B:"); scanf("%lf%lf",&Xb,&Yb); printf("\n Введите координаты точки C:"); scanf("%lf%lf",&Xc,&Yc); Sa = get_distance(Xa,Ya); Sb = get_distance(Xb,Yb); Sc = get_distance(Xc,Yc); double max = Sa; int flag = 1; if ( max < Sb ) { max = Sb; flag = 2; } if ( max < Sc ) { max = Sc; flag = 3; } if ( 1 == flag ) { printf( "Наибольшее расстояние от начала координат %f имеет точка A\n", max ); } else if ( 2 == flag ) { printf( "Наибольшее расстояние от начала координат %f имеет точка B\n", max ); } else if ( 3 == flag ) { printf( "Наибольшее расстояние от начала координат %f имеет точка C\n", max ); } else { printf( "Неожиданное значение флага\n" ); } return 0; } double get_distance(double x, double y) { return sqrt(x*x+y*y); }
Объяснение кода листинга программы
- Вводится функция
get_distance
, которая вычисляет расстояние между двумя точками в соответствии с формулой Евклида (по сути, это квадратный корень из суммы квадратов разности координат по оси x и y). - В функции
main
объявляются переменныеSa
,Sb
,Sc
,Xa
,Ya
,Xb
,Yb
,Xc
,Yc
, которые используются для хранения расстояний и координат точек. - Пользователю предлагается ввести координаты точки A с помощью функции
scanf
. - Пользователю предлагается ввести координаты точки B с помощью функции
scanf
. - Пользователю предлагается ввести координаты точки C с помощью функции
scanf
. - Значения переменных
Sa
,Sb
иSc
вычисляются с помощью функцииget_distance
, передавая в нее соответствующие координаты точек. - Переменная
max
инициализируется значениемSa
. - Переменная
flag
инициализируется значением 1. - Сравниваются значения
max
иSb
. ЕслиSb
больше, тоmax
иflag
обновляются соответственно. - Сравниваются значения
max
иSc
. ЕслиSc
больше, тоmax
иflag
обновляются соответственно. - Выводится сообщение, указывающее точку, которая находится дальше всего от начала координат, в зависимости от значения переменной
flag
. - Возвращается 0 из функции
main
, что означает успешный конец работы программы. - В функции
get_distance
вычисляется расстояние между двумя точками с помощью функцииsqrt
из библиотекиmath.h
, которая вычисляет квадратный корень. Формула для вычисления расстояния между двумя точками(x2-x1)^2 + (y2-y1)^2 = d^2
преобразуется в видd = sqrt(x2-x1)^2 + (y2-y1)^2
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д