2013-11-20 4 views
2

Я хочу массив в структуре, но я не уверен, как это сделать. Я могу использовать только один массив в структуре.Array in struct

typedef struct 
{ 
    int arr[10]; 
} coords; 


coords x; 

printf("Enter X coordinates: "); 

scanf("%d", x.arr[0]); 
scanf("%d", x.arr[1]); 
scanf("%d", x.arr[2]); 
... 

Моя проблема в том, как я также могу ввести значения X в массиве? Сначала я подумал о двухмерном массиве arr[10][10], но это не сработало, потому что у меня есть некоторые вычисления для значений X.

Правильный способ просто определить новый объект, например coords x;, и просто сделать это повсюду?

В принципе, я хочу, чтобы структура содержала один (1) массив. Я хочу, чтобы структура содержала координаты x и y для карты, которую вводит пользователь. Позже в программе я хочу делать вычисления с ТОЛЬКО значениями x.

+5

Я не понимаю (почти) ничего. Вы можете перефразировать? –

+0

Я обновил OP, возможно, что-то стало яснее. :) – user3005287

+0

Можете ли вы привести нам пример данных, которые вы хотите использовать? –

ответ

3

Вы можете использовать несколько массивы в одной структуре в следующем виде:

typedef struct 
{ 
    int x[10]; 
    int y[10]; 
} coords; 


coords c; 

printf("Enter a couple of X coordinates: "); 
scanf("%d", &c.x[0]); 
scanf("%d", &c.x[1]); 

printf("Enter a couple of Y coordinates: "); 
scanf("%d", &c.y[0]); 
scanf("%d", &c.y[1]); 

Обратите внимание, что в scanf() вы должны передавать указатели на элементы массива, а не элементы.

Также вы можете сделать это с помощью один 2-D массив (X_COOR и Y_COOR могут быть удалены):

#define X_COOR 0 
#define Y_COOR 1 
typedef struct 
{ 
    int coords[2][10]; 
} coords;  

coords c; 

printf("Enter a couple of X coordinates: "); 
scanf("%d", &c.coords[X_COOR][0]); 
scanf("%d", &c.coords[X_COOR][1]); 

printf("Enter a couple of Y coordinates: "); 
scanf("%d", &c.coords[Y_COOR][0]); 
scanf("%d", &c.coords[Y_COOR][1]); 
+0

Но я могу иметь только один массив в структуре, а не несколько. – user3005287

+0

@ user3005287 Тогда как вы хотите сохранить их в одном массиве? Interleaved? Среднее x, y, x, y ... – Michael

+0

@ user3005287 В ответе находится один 2-мерный массив. – Michael

0

Вы код отлично, за исключением вы должны поместить & оператора перед аргументом каждого scanf ,

scanf("%d", &x.arr[0]); 

Для координат Y вам необходимо определить другой массив внутри вашей структуры.

0

Создайте еще один-структуру для массива элементов:

typedef struct 
{ 
    int x; 
    int y; 
} coord; 

typedef struct 
{ 
    coord arr[10]; 
} coords; 

Использование:

scanf("%d", &x.arr[0].x); 
1

приятнее решение, конечно, сделать массив структуры, так как основной вещи вы заинтересованы в (координата, выраженная в виде пары значений) может быть смоделирована хорошо как структура:

typedef struct { 
    int x, y; 
} coordinate; 

то вы можете dec достаточно легко получить массив:

coordinate my_coords[100];