JiaWei Lee Ответов: 3

Найти среднюю точку координаты


Точка представляет собой координату в плоскости x-Y. Он поддерживается следующими функциями:

Point * make_point(double x, double y)
double x_of(Point *p)
double y_of(Point *p)
void print_point(Point *p)

Напишите функцию
Point * mid_point
это принимает две точки в качестве аргументов и возвращает точку, которая является средней точкой этих двух входных координат.

Что я уже пробовал:

Протестируйте его в онлайн симуляторе с нижеприведенным выражением, но не смогли получить его правильно
mid_point(make_point(1.0, 1.0), make_point(3.0, 3.0))


мой код:
Point * mid_point(Point *x, Point *y) {
    
    int mid;

    mid = make_point((x_of (x) + x_of(x) ) / 2,  (y_of(y) + y_of(y) ) / 2);
    
    print_point(mid);
    
}

Patrice T

В чем же вопрос?

3 Ответов

Рейтинг:
16

CPallini

Цитата:
Точка * mid_point(точка х*, точку *Г) {

инт середине;

mid = make_point((x_of (x) + x_of(x) ) / 2, (y_of(y) + y_of(y) ) / 2);

print_point(середина);

}


Изменение
Point * mid_point(Point *p, Point *q) {
    
    Point * m;

    m = make_point((x_of (p) + x_of(q) ) / 2,  (y_of(p) + y_of(q) ) / 2);
    
    print_point(m);

    return m;
}


Рейтинг:
1

KarstenK

Вам нужно реализовать некоторые функции, такие как

double x_of(Point *p)
{
  return p->x;
}
но это пропускает обработку ошибок нулевых указателей так
double x_of(Point *p)
{
  return p ? p->x : 0;
}
должно быть правильным.

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

Найдите какой-нибудь учебник по этому языку подробнее.


Рейтинг:
0

OriginalGriff

Ваш синтаксис неверен: вам нужно получить доступ к вашим координатам через оператор "->" с указателями:

double x1 = x->x_off;
double y1 = x->y_off;
Я бы посоветовал вам изменить имена параметров функции, чтобы уменьшить путаницу:
Point* mid_point(Point* a, Point* b)
   {
   ...
   }