Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?
Язык программирования C
Язык программирования C
Последний раз редактировалось YURI 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
#define a(i,j) a[i][j]
Так не работает?
Так не работает?
Последний раз редактировалось da67 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
Непонятно для чего это нужно.
B программе массив[i][j] i и j заменяются на число.
Ho не видно практического смысла в этом.
Код: Выбрать все
#define i число
#define j число
B программе массив[i][j] i и j заменяются на число.
Ho не видно практического смысла в этом.
Последний раз редактировалось delphiec 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
#define же используется для объявления констант. Сомневаюсь что получится изменить стандартное обращение к массиву. Синтаксис языка всё-таки
delphiec, это ты объявил константами i,j. Насколько я понял, это не то
delphiec, это ты объявил константами i,j. Насколько я понял, это не то
Последний раз редактировалось A.I. 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
YURI писал(а):Source of the post
Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?
Нельзя так сделать.
Мне интересно, как тогда компилятор будет массивы от функций отличать .
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
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 postYURI писал(а):Source of the post
Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?
Нельзя так сделать.
Мне интересно, как тогда компилятор будет массивы от функций отличать .
Знаю точно, что можно.
Последний раз редактировалось YURI 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
Знаю точно, что нельзя.
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
Сори, не понял сразу вопроса.
Думается лучше сделать функцию и не использовать define
Думается лучше сделать функцию и не использовать define
Последний раз редактировалось delphiec 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
Компилятор получает текст уже после раскрытия всех макросов.qwertylol писал(а):Source of the post Мне интересно, как тогда компилятор будет массивы от функций отличать .
B исходном задании такого условия не было Это точно так? Как описан массив?YURI писал(а):Source of the postНет, ведь матрица задана в одномерном массиве.#define a(i,j) a[i][j]
Так не работает?
У второго a скобки должны быть квадратными.Я думал можно вот так,
#define a(i,j) a(i*n+j)
но не работает.
Как всё же описан массив? Это важно.
Последний раз редактировалось da67 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Язык программирования C
A кто же тогда макросы раскрывает? Как раз компилятор получает исходный код и превращает его в бинарный.
Компилятор не сможет понять
Код: Выбрать все
a(0,3)
это обращение к массиву или к функции. Именно поэтому нельзя называть функцию и переменную одним именем.
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test
Причина: test
Вернуться в «Computer Science»
Кто сейчас на форуме
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 0 гостей