Вычислить координаты точки, наиболее удаленной от начала координат - 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.