Temat stanął w miejscu (pewnie autor zrezygnował). Podepnę się.
Napisałem to dla wprawki. Czy to jest zgodne z C?
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
struct Point {
int x_;
int y_;
};
void printPoint(struct Point* point)
{
printf("x: %i y: %i", point->x_, point->y_);
}
struct Point randomPoint()
{
struct Point point;
point.x_ = (rand() % 21) - 10;
point.y_ = (rand() % 21) - 10;
return point;
}
void fillPoints(struct Point points[], size_t size)
{
for (size_t i = 0; i < size; ++i) {
points[i] = randomPoint();
}
}
double distance(const struct Point* mainPoint, const struct Point* actualPoint) {
return sqrt(
((actualPoint->x_ - mainPoint->x_) * (actualPoint->x_ - mainPoint->x_))
+ ((actualPoint->y_ - mainPoint->y_) * (actualPoint->y_ - mainPoint->y_))
);
}
struct Point findMaxDistancePoint(const struct Point* points, size_t size, double* maxDistance)
{
struct Point searchPoint;
for (size_t i = 1; i < size; ++i) {
double currentDistance = distance(points, points + i);
if (*maxDistance < currentDistance) {
*maxDistance = currentDistance;
searchPoint = *(points + i);
}
}
return searchPoint;
}
int main(void)
{
srand(time(NULL));
double maxDistance = 0.0;
size_t size;
scanf("%i", &size);
struct Point* points = (struct Point*)malloc(sizeof(struct Point) * size);
if (points == NULL) {
perror("Memory");
exit(EXIT_FAILURE);
}
fillPoints(points, size);
struct Point maxDistancePoint = findMaxDistancePoint(points, size, &maxDistance);
printf("maks dystanse jest miedzy punktami:\n");
printPoint(points);
printf("\noraz\n");
printPoint(&maxDistancePoint);
printf("\ni wynosi %lf\n", maxDistance);
free(points);
return 0;
}
Nie "krzyczcie" zbyt mocno. Zacząłem od C++, ale chcę też chociaż liznąć C.