指针和结构
Pointer and structures
我想编写一个代码来扫描 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);
}
我想编写一个代码来扫描 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);
}