Вычислить координаты точки, наиболее удаленной от начала координат - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день! Исправьте пожалуйста что не так))) Условие: По вводимым координатам трех точек А,В,С на плоскости вычислить координаты точки, наиболее удаленной от начала координат, используя собственную функцию определения расстояния заданной точки от начала координат. Вот код:
#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);
}
P.S.но чувствую что он не совсем правильный (или совсем неправильный))

Решение задачи: «Вычислить координаты точки, наиболее удаленной от начала координат»

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);
}

Объяснение кода листинга программы

  1. Вводится функция get_distance, которая вычисляет расстояние между двумя точками в соответствии с формулой Евклида (по сути, это квадратный корень из суммы квадратов разности координат по оси x и y).
  2. В функции main объявляются переменные Sa, Sb, Sc, Xa, Ya, Xb, Yb, Xc, Yc, которые используются для хранения расстояний и координат точек.
  3. Пользователю предлагается ввести координаты точки A с помощью функции scanf.
  4. Пользователю предлагается ввести координаты точки B с помощью функции scanf.
  5. Пользователю предлагается ввести координаты точки C с помощью функции scanf.
  6. Значения переменных Sa, Sb и Sc вычисляются с помощью функции get_distance, передавая в нее соответствующие координаты точек.
  7. Переменная max инициализируется значением Sa.
  8. Переменная flag инициализируется значением 1.
  9. Сравниваются значения max и Sb. Если Sb больше, то max и flag обновляются соответственно.
  10. Сравниваются значения max и Sc. Если Sc больше, то max и flag обновляются соответственно.
  11. Выводится сообщение, указывающее точку, которая находится дальше всего от начала координат, в зависимости от значения переменной flag.
  12. Возвращается 0 из функции main, что означает успешный конец работы программы.
  13. В функции get_distance вычисляется расстояние между двумя точками с помощью функции sqrt из библиотеки math.h, которая вычисляет квадратный корень. Формула для вычисления расстояния между двумя точками (x2-x1)^2 + (y2-y1)^2 = d^2 преобразуется в вид d = sqrt(x2-x1)^2 + (y2-y1)^2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы