我想编写一个扫描X和Y变量并将其放入结构(带有指针)的代码,然后打开一个函数,在该函数中应计算点到坐标原点之间的距离(不知道英文名称sry )。
#include <stdio.h>
#include <math.h>
typedef struct
{
int x;
int y;
double abstand;
}punktdaten;
void abstandsberechnung(punktdaten *punkt,int N);
int main ()
{
punktdaten *punkt;
int N;
punktdaten hilf;
printf ("Geben sie die Anzahl ihrer Punkt ein:\n");
scanf ("%d", &N);
if (N <= 100) /* Es darf höchstens 100 sein, weil Aufgabenstellung */
{
for (int i = 0; i < N; i++)
{
printf ("Geben sie die X und Y Koordinaten ihrer %d Punkte ein:", N);
scanf ("%d%d",&(punkt->x),&(punkt->y));
}
abstandsberechnung(&punkt,N);
}
else
printf("Zu viele Punkte!");
}
void abstandsberechnung (punktdaten *punkt,int N)
{
for(int i=0;i<N;i++)
punkt->abstand=sqrt(punkt->x*punkt->x*punkt->y*punkt->y);
}
我不知道如何扫描变量以及如何使用结构和指针进行计数。它说在第29行中有一个不兼容的指针类型,在第12行中它期望的是“ punktdaten *”,但它是“ punktdaten **”。
您能帮我吗?
punkt
。它不应该是一个指针,而应该是一个数组。然后,您需要每次通过main()
和abstandsberechnung()
中的循环对其进行索引。int main ()
{
int N;
punktdaten hilf;
printf ("Geben sie die Anzahl ihrer Punkt ein:\n");
scanf ("%d", &N);
if (N <= 100) /* Es darf höchstens 100 sein, weil Aufgabenstellung */
{
punktdaten punkt[N];
for (int i = 0; i < N; i++)
{
printf ("Geben sie die X und Y Koordinaten ihrer %d Punkte ein:", N);
scanf ("%d%d",&(punkt[i].x),&(punkt[i].y));
}
abstandsberechnung(punkt,N);
}
else
printf("Zu viele Punkte!");
}
void abstandsberechnung (punktdaten *punkt,int N)
{
for(int i=0;i<N;i++)
punkt[i].abstand=sqrt(punkt[i].x*punkt[i].x*punkt[i].y*punkt[i].y);
}