О многомерных массивах
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Хочу написать функцию перемножения матриц переменных размерностей (т.е. заранее размерность входных матриц неизвестна) :
C = A*B ,
A=матрица i x j , B = матрица j x k , соотв-но C = матрица i x k
если у меня есть на входе только указатель на массив A и B ,
как можно определить сколько в них столбцов и сколько строк ?
есть ли такие функции в языке C ?
sizeof(A) / sizeof(A[0]) даст полное кол-во элементов, а мне нужно кол-во строк и столбцов.
помогите плз
C = A*B ,
A=матрица i x j , B = матрица j x k , соотв-но C = матрица i x k
если у меня есть на входе только указатель на массив A и B ,
как можно определить сколько в них столбцов и сколько строк ?
есть ли такие функции в языке C ?
sizeof(A) / sizeof(A[0]) даст полное кол-во элементов, а мне нужно кол-во строк и столбцов.
помогите плз
sizeof(A) / sizeof(A[0]) даст тебе скорее всего единицу потому как размер указателя интового 4 байта а размер инта тоже 4 байта 
в С таких функций нет, так что тебе придется передавать размеры дополнительно

в С таких функций нет, так что тебе придется передавать размеры дополнительно
В SAD - все в SAD.
Можно конечно поступить следующим образом (в С++) - поочередно обращаться к элементам массива пока не вылетит исключение - это признак того что ты вышел за границу - но способ очень надуманный и лично я бы его не использовал - это так из разряда "очень хоцца"
В SAD - все в SAD.
Я бы вообще не советовал этой фигнёй страдать. В интернете полно готовых реализаций на С++ объектов типа Matrix в виде классов и шаблонов со встроенными алгоритмами перемножения, транспонирования, вычисления определителей...
WinMain ты как всегда - есть готовое 
согласен и поддерживаю !!!
только вопрос звучит "хочу написать", а не "млин горит помогите срочно надо..."
человек еще и удовлетворение пытается от программирования получать

согласен и поддерживаю !!!
только вопрос звучит "хочу написать", а не "млин горит помогите срочно надо..."
человек еще и удовлетворение пытается от программирования получать
В SAD - все в SAD.
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
А зачем такое надо? В 3-х мерной графике например в основном используются матрицы 4x4. Очень хорошо в такой ситуации использовать не двухменый а одномерый массив и индексацию типа _arr[ (y<<2) | x ]. Циклы размером в четыре итерации компилятор Intel совершенно чудно разворачивает. Зачем делать функцию на все случаи жизни?
Язык С++ статичен по своей идеологии и писать на нем в полностью динамическом стиле (т.е чтобы все функции были широкого назначения и не знали свойств тех данных с которыми им придется работать вплоть до выполнения) несколько неразумно.
Язык С++ статичен по своей идеологии и писать на нем в полностью динамическом стиле (т.е чтобы все функции были широкого назначения и не знали свойств тех данных с которыми им придется работать вплоть до выполнения) несколько неразумно.
Исключения предназначены только для исключительных ситуаций. Выход из цикла по исключению будет раз в тысячу медленней чем через break.[/quote]поочередно обращаться к элементам массива пока не вылетит исключение
2B OR NOT(2B) = FF
да но фишка в том что при таком подходе мы знаем что достигли границы массива (имелся ввиду случай что она не задана)
В SAD - все в SAD.