Язык программирования C

Аватар пользователя
YURI
Сообщений: 5373
Зарегистрирован: 12 дек 2007, 21:00

Язык программирования C

Сообщение YURI » 03 апр 2009, 16:55

Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?
Последний раз редактировалось YURI 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
da67
Сообщений: 5491
Зарегистрирован: 18 фев 2008, 21:00

Язык программирования C

Сообщение da67 » 03 апр 2009, 17:34

#define a(i,j) a[i][j]
Так не работает?
Последний раз редактировалось da67 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
delphiec
Сообщений: 9
Зарегистрирован: 27 мар 2009, 21:00

Язык программирования C

Сообщение delphiec » 03 апр 2009, 17:46

Непонятно для чего это нужно.

Код: Выбрать все

#define i число
#define j число

B программе массив[i][j] i и j заменяются на число.
Ho не видно практического смысла в этом.
Последний раз редактировалось delphiec 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
A.I.
Сообщений: 2061
Зарегистрирован: 06 сен 2006, 21:00

Язык программирования C

Сообщение A.I. » 03 апр 2009, 17:49

#define же используется для объявления констант. Сомневаюсь что получится изменить стандартное обращение к массиву. Синтаксис языка всё-таки

delphiec, это ты объявил константами i,j. Насколько я понял, это не то
Последний раз редактировалось A.I. 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Язык программирования C

Сообщение qwertylol » 03 апр 2009, 17:56

YURI писал(а):Source of the post
Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?

Нельзя так сделать.
Мне интересно, как тогда компилятор будет массивы от функций отличать .
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
YURI
Сообщений: 5373
Зарегистрирован: 12 дек 2007, 21:00

Язык программирования C

Сообщение YURI » 03 апр 2009, 18:04

delphiec писал(а):Source of the post
Непонятно для чего это нужно.

Код: Выбрать все

#define i число
#define j число

B программе массив[i][j] i и j заменяются на число.
Ho не видно практического смысла в этом.

Это не то.

#define a(i,j) a[i][j]
Так не работает?

Нет, ведь матрица задана в одномерном массиве.

#define же используется для объявления констант. Сомневаюсь что получится изменить стандартное обращение к массиву. Синтаксис языка всё-таки

delphiec, это ты объявил константами i,j. Насколько я понял, это не то

Да не то.

Я думал можно вот так,
#define a(i,j) a(i*n+j)
но не работает.

qwertylol писал(а):Source of the post
YURI писал(а):Source of the post
Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?

Нельзя так сделать.
Мне интересно, как тогда компилятор будет массивы от функций отличать .

Знаю точно, что можно.
Последний раз редактировалось YURI 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Язык программирования C

Сообщение qwertylol » 03 апр 2009, 18:08

YURI писал(а):Source of the post
Знаю точно, что можно.

Знаю точно, что нельзя.
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
delphiec
Сообщений: 9
Зарегистрирован: 27 мар 2009, 21:00

Язык программирования C

Сообщение delphiec » 03 апр 2009, 18:28

Сори, не понял сразу вопроса.
Думается лучше сделать функцию и не использовать define
Последний раз редактировалось delphiec 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
da67
Сообщений: 5491
Зарегистрирован: 18 фев 2008, 21:00

Язык программирования C

Сообщение da67 » 03 апр 2009, 18:37

qwertylol писал(а):Source of the post Мне интересно, как тогда компилятор будет массивы от функций отличать .
Компилятор получает текст уже после раскрытия всех макросов.


YURI писал(а):Source of the post
#define a(i,j) a[i][j]
Так не работает?
Нет, ведь матрица задана в одномерном массиве.
B исходном задании такого условия не было Это точно так? Как описан массив?
Я думал можно вот так,
#define a(i,j) a(i*n+j)
но не работает.
У второго a скобки должны быть квадратными.

Как всё же описан массив? Это важно.
Последний раз редактировалось da67 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Язык программирования C

Сообщение qwertylol » 03 апр 2009, 18:59

da67 писал(а):Source of the post
Компилятор получает текст уже после раскрытия всех макросов.

A кто же тогда макросы раскрывает? Как раз компилятор получает исходный код и превращает его в бинарный.
Компилятор не сможет понять

Код: Выбрать все

a(0,3)

это обращение к массиву или к функции. Именно поэтому нельзя называть функцию и переменную одним именем.
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 4 гостей