| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++] транспонирование матрицы в функции |
| Автор: Ardour 10.6.2007, 13:57 |
| Задан массив второй степени a[8][8] в главной функции. Нужно с помощью функции вывести исходный массив на экран, а затем транспонировать его (опять же с помощью функции) (//a[i][j]==a[j][i]) и опять вывести на экран. |
| Автор: Voldemar2004 10.6.2007, 14:30 | ||
|
| Автор: DigitSphinx 10.6.2007, 14:35 | ||
Можно так (на VS2005)
|
| Автор: Ardour 10.6.2007, 15:34 |
| Что-то вроде этого #include <stdio.h> float print(float *a) //печать двумерного массива { int i, j; printf("\nИсходный массив:\n\n"); for(i=0;i<6;i++) { for(j=0;j<6;j++) { printf("%4.0f ", *a); a++; } printf("\n"); } printf("\n"); return (0); } /*float transp(float *a) { int i, j; int c; printf("\nТранспонированный массив:\n\n"); for(i=0;i<6;i++) { for(j=0;j<6;j++) { c=*a; // *a=a[j][i]; // a[j][i]=c; printf("%4.0f ", *a); a++; } printf("\n"); } printf("\n\n"); return (0); }*/ int main() { float a[6][6]={ {0,0,0,0,49,18}, {0,0,85,0,0,39}, {0,85,0,17,0,0}, {0,0,17,0,0,12}, {49,0,0,0,0,9}, {18,39,0,12,9,0}, }; //int i,j,; print(*a); transp(*a); print(*a); |
| Автор: DigitSphinx 10.6.2007, 16:14 |
Зачем float ? Зачем 4.0 ?? Сразу бы сделал массив int’ов ! |
| Автор: TimeBreak 18.3.2009, 14:55 |
| Возник почти аналогичный вопрос ! Подскажите плз .... вот квадратную матрицу Транспонировать без проблем а вот как транспонировать Не Квадратную матрицу скажем 3х4 ??? Заранее Благодарен ! |
| Автор: zim22 18.3.2009, 16:01 |
http://ru.wikipedia.org/wiki/Транспонированная_матрица |
| Автор: vinter 18.3.2009, 16:36 |
Ты не поверишь. ТОЧНО ТАК ЖЕ!!! И знаешь, что самое интересное? В любом, самом захудалом учебнике, в котором есть матрицы, есть описание транспонирования. И если уж ты решил взаимодействовать с матрицами, так открой учебник и прочитай про них, прежде чем писать на форум. Достали всякие ### ### ### ########### ###### и #### ## #### ######## |
| Автор: andrew_121 18.3.2009, 16:48 | ||
Солидарен. По этому и отвечать не стал! |
| Автор: Ln78 18.3.2009, 17:16 | ||
TimeBreak, уточни: язык C или C++, размерности известны заранее или нет, нужно ли сохранять исходную матрицу, в чём именно у тебя проблема?
vinter, ты не поверишь, но в программировании случай квадратной матрицы и прямоугольной могут отличаться весьма существенно. Например, для прямоугольной может потребаться динамическое выделение памяти, когда для квадратной этого делать не нужно, и задача упрощается на порядок. И знаешь, что самое интересное? В математических книгах об этом нет ни слова. Хорошо, что разобраться в этом помогают форумы, в которых к новичкам относятся дружелюбно. |
| Автор: Anikmar 18.3.2009, 17:20 |
| ИМХО Если вопрос я считаю тупым, а задающего вопрос круглым дураком - я либо шучу либо не отвечаю. Так что Ln78 где-то прав |
| Автор: TimeBreak 18.3.2009, 17:33 |
| 2 Ln78 : нужен на С++ ! Размерности задаются с клавиатуры ! Трансформировать квадратную матрицу - без проблем , а вот тот же код для не квадратной матрицы не работает и работать не будет - поетому и задал вопрос ! Сохранять исходную матрицу не обязательно ! По моему из всех умников посылающих в книгу понял вопрос только ты ) 2 Anikmar - по моему дурило здесь ты ! Такшто шути дальше КЛОУН ) |
| Автор: Earnest 18.3.2009, 17:45 |
| Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |
| Автор: andrew_121 18.3.2009, 17:45 |
А можно расшифровочку в приват? |
| Автор: zim22 18.3.2009, 17:56 |
если нет проблем с квадратной - с прямоугольной тоже у тебя проблем не будет. вот алгоритм: увеличь матрицу до большей размерности. и получишь квадратную. только в которой не нужно обрабатывать определённые значения в строках-столбцац. |
| Автор: vinter 18.3.2009, 18:50 | ||||||||||
алгоритмы универсальны, и воспроизводятся универсально. А не отдельно для квадратной, отдельно для не квадратной. Это делается элементарно. Так, что не надо сказок про разные случаи.
сделай транспонирование матрицы любого размера без динамической памяти на С++, будь добр.
к новичкам которые пытаются разобраться - да. А халявщикам один путь - в армию\в дворники(нужное подчеркнуть). Ln78, надо научится различать когда твоя помощь нужна действительно, а когда ты оказываешь медвежью услугу. Здесь как-раз второй случай.
я тоже обычно так делаю, сегодня вот решил ответить
ты за, что так бедного Anikmar'a то? Он просто перевел на твой язык, то, что я написл в своем посту да там нет ничего, я просто решёток наставил |
| Автор: Anikmar 18.3.2009, 19:34 | ||
TimeBreak, прежде чем оскорблять - внимательно прочитайте в каком контексте я написал свой пост. Я выступил в поддержку Ln78 против резкого ответа vinter. В виду того, что я понял, что написали вы это не вникнув в суть моей фразы, я вам ответил. На форуме в первую очередь ведут себя вежливо. Если вы начинаете диалог сразу на ты и с оскорблений, это навевает на некоторые мысли, касаемые элементарной вашей воспитанности. Добавлено через 3 минуты и 34 секунды vinter, Ln78, Давате будем жить дружно. Все нормально - просто помягче надо (это я vinter). Проехали, я ни на кого не обижаюсь, но спасибо за поддержку. |
| Автор: Ln78 19.3.2009, 06:11 | ||||
Универсальность ценой оптимальности нужна далеко не всегда. А то получится как в том анекдоте: выльем воду и сведём задачу к предыдущей. Если у меня входной массив допускает двойную индексацию , оригинал не нужно сохранять, и я знаю, что матрица квадратная, я просто напишу:
Да я и не собирался ни с кем ссориться. И к vinter’у обратился с миролюбивой просьбой. Тем более, учитывая, что спрашивающий оказался хамом, желание помочь и у меня ушло напрочь. |