指针和结构

问题描述 投票:0回答:1

我想编写一个扫描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 **”。

您能帮我吗?

c function pointers types structure
1个回答
1
投票
您正在取消引用未初始化的指针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); }

© www.soinside.com 2019 - 2024. All rights reserved.