Как я могу передать целые числа, прочитанные из текстового файла в struct function? - PullRequest
0 голосов
/ 09 февраля 2020

Я хочу передать текстовый файл целых чисел в структуру smalllest_xcoord. Я пытаюсь получить выпуклый корпус. Моя проблема, я продолжаю получать ошибку при попытке. Как я могу передать целые числа, прочитанные из текстового файла в мою функцию структуры? Я не включил мою структуру Point, но в ней хранится int x; и int y; (для выпуклых точек корпуса).

    ```
    //GLOBAL Variable
    static int integers[100000];

    int load_integers(const char* filename)
    {
      //int integers[100000];

      FILE *fp = NULL;
      int value;
      int i = -1;

      if ((fp= fopen (filename, "r"))==NULL)
      {
        return -1;
      }

      while (fscanf (fp, "%u", &value)&& !feof(fp) && ++i <100000)
      {
         integers[i] = value;
      }
      fclose(fp);

      return i+1;
    }

    struct Point smallest_xCoord (struct Point points, int numPoints)
    {
       struct Point points[];

       struct Point minX_point = points[0];
       int i;

       for(i=1;i<numPoints;i++)
       {
         if ((points[i].x) < (minX_point.x))
         {
            minX_point = points[i];
         }
         else if (points[i].x == minX_point.x)
         {
            if (points[i].y < minX_point.y)
            {
               minX_point=points[i];
            }
         }
    }
      return minX_point;
    }

    int main(int argc, char *argv[])
    {

       int num_ints=0;

       if (argc <2)
       {
         fprintf(stderr, "%s <file>\n",argv[0]);
         return -1;
       }

       if ((num_ints = load_integers(argv[1])) <=0)
       {
          fprintf(stderr, "Error reading from file: %s\n",argv[1]);
          return -1;
       }

       smallest_xCoord(integers, num_ints);

       return 0;
    }
    ```

1 Ответ

0 голосов
/ 09 февраля 2020

smalllest_xCoord (integer, num_ints);

Во-первых, вы не можете передать целочисленный тип данных параметру типа данных Point. Во-вторых, нельзя передать целочисленный тип данных массива в один параметр Point.

struct Point smalllest_xCoord (struct Point points, int numPoints) {struct Point points [];

в-третьих, вы не можете создать новую переменную внутри x_Coord с именем, похожим на ее параметр, потому что вы повторно объявляете ее.

Если вы хотите передать массив как параметр, вы должны использовать указатель ( *) перед его именем. Для работы функции smalllest_xCoord необходимо указать, с каким элементом структуры Point вы хотите сравнить или назначить его. Я предлагаю вам, вероятно, вам нужно изменить эту глобальную переменную массива int на глобальную переменную массива Point и загрузить ее со значением из вашего файла, который, как я полагаю, должен содержать значения для координат x и y, чтобы вы могли сравнить загруженную глобальную переменную. Укажите массив на тот, который вы предоставляете. Затем измените параметр smalllest_xCoord на «struct Point * points» или «struct Point points []», так как вы передаете массив для сравнения.

...