Синтаксис для пользовательского ввода 2D-массива во вложенной структуре? - PullRequest
1 голос
/ 16 апреля 2019

Проблема:

  • Создание вложенной структуры для хранения координат конечных точек отрезок.
  • В программе запросите у пользователя координаты и распечатайте их.

Мне удалось создать код и заставить его работать, как видно ниже, но я должен был сделать это, предварительно заполнив значения для массива, а затем пользовательский ввод заменил эти предварительно назначенные значения. Моя интуиция заключается в том, что есть лучший способ сделать это (например, объявить пустой массив для начала), и я хотел бы знать, как.

Хотя я смог заставить работать код, используя: lineseg myline = {{4,2},{5,9}};, это не то, что я хочу.

Я сделал несколько попыток создания пустого массива, но ни одна из них не сработала.

Например, вместо lineseg myline[2][2];.

#include <stdio.h>

typedef struct
{
    int x,
        y;
} point;

typedef struct
{
    point pt1,
          pt2;
} lineseg;

void main()
{
    lineseg myline = {{4,2},{5,9}};

    printf("Enter x coordinate for the first point: ");
    scanf("%d",&myline.pt1.x);
    printf("Enter y coordinate for the first point: ");
    scanf("%d",&myline.pt1.y);
    printf("Enter x coordinate for the second point: ");
    scanf("%d",&myline.pt2.x);
    printf("Enter y coordinate for the second point: ");
    scanf("%d",&myline.pt2.y);
    printf("\nPoint 1: (%d,%d)  Point 2: (%d,%d)",myline.pt1.x,
           myline.pt1.y,myline.pt2.x,myline.pt2.y);
    return 0;
}

Когда я ввожу 3, 1, 4 и 8, оператор вывода правильно печатает «Точка 1: (3,1) Точка 2: (4,8)»

Любые предложения о том, как сделать это без записи в объявленный массив, будут потрясающими.

1 Ответ

3 голосов
/ 17 апреля 2019

Вам не нужно инициализировать myline какими-либо значениями. Вам просто нужно это объявить.

lineseg myline;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...