Попытка вычислить площадь многоугольника, которая принимает (x, y) координаты до возможных 100 точек из .txt-файла с использованием перенаправления, например. ./program < file.txt
У меня возникли проблемы с сканированием на входе, чтобы моя функция вычислила область.
Вход является:Проблемы вычисления площади многоугольника в C
3 12867 1.0 2.0 1.0 5.0 4.0 5.0
где 3 является NPOINTS и 12867 это идентификационный номер.
Это мой код, который я произвел до сих пор:
#include <stdio.h>
#include <stdlib.h>
#define MAX_PTS 100
#define MAX_POLYS 100
#define END_INPUT 0
// function to calculate the area of a polygon
// think it's correct
double polygon_area(int MAX_PTS, double x[], double y[])
{
printf("In polygon.area\n");
double area = 0.0;
for (int i = 0; i < MAX_PTS; ++i)
{
int j = (i + 1)%MAX_PTS;
area += 0.5 * (x[i]*y[j] - x[j]*y[i]);
}
printf("The area of the polygon is %lf \n", area);
return (area);
}
// having trouble reading in values from a txt file into an array
int main(int argc, char *argv[]) {
int npoints, poly_id;
double // something should go here
if(scanf("%d %d", &npoints, &poly_id)) {
int iteration = 0;
struct Point initialPoint = a;
double area = 0;
scanf("%lf %lf", &, &);
// keep getting errors with what goes next to the &
for (iteration = 1; iteration < npoints; ++iteration) {
scanf("%lf %lf", &, &);
// keep getting errors with what goes next to the &
area += polygon_area(); // unsure what to do here
}
// now complete the polygon with last-edge joining the last-point
// with initial-point.
area += polygon_area(a, initialPoint);
printf("First polygon is %d\n", poly_id);
printf("area = %2.2lf m^2\n", area);
}
return 0;
}
я, случается, новичок в кодировании, так что-нибудь прошлое, используя массивы и структуры, я не очень понимаю, но любая помощь по-прежнему ценится!
пожалуйста, более подробно рассказать о npoint и идентификационный номер. Каково его использование? где координаты (х, у)? –
Я сомневаюсь, что 'scanf ("% lf% lf ", &, &);' будет компилироваться. Это должно как минимум читать '& a.x, & a.y' или что-то совместимое с определением Point. –
Вы не можете использовать' MAX_PTS' как имя #define и имя аргумента.Это не будет работать, поскольку компилятор увидит ваше имя переменной как 100, что является недопустимым именем переменной. –