Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] транспонирование матрицы в функции 
:(
    Опции темы
Ardour
Дата 10.6.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



Задан массив второй степени a[8][8]  в главной функции. Нужно с помощью функции вывести исходный массив на экран, а затем транспонировать его (опять же с помощью функции) (//a[i][j]==a[j][i]) и опять вывести на экран.
PM MAIL   Вверх
Voldemar2004
  Дата 10.6.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 2
Всего: 23



Код
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

void T(void){

int array[8][8];

/* çàäàäèì ïðîèçâîëüíûé ìàññèâ: */

for(int i=0; i<8; i++)
{
 for(int j=0; j<8; j++)
 {
 array[i][j]=rand();
 }
}

cout<<"Random Matrix: "<<"\n";

/* âûâîä ìàòðèöû: */

for(int i=0; i<8; i++)
{
  for(int j=0; j<8; j++)
  {
   cout<<array[i][j]<<"\t";
   if(j==7){cout<<"\n";};
  }
}

cout<<"\n\nT Matrix: "<<"\n";

/* âûâîä ìàòðèöû: */

for(int i=0; i<8; i++)
{
  for(int j=0; j<8; j++)
  {
   cout<<array[j][i]<<"\t";
   if(j==7){cout<<"\n";};
  }
}

cin.get();

clrscr();

}


//---------------------------------------------------------------------------
int main()
{

T();

return 0;
}
//---------------------------------------------------------------------------
Так?


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
DigitSphinx
Дата 10.6.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



Можно так (на VS2005)
Код

#include <stdlib.h>
void PrintMass(double **a);
void TransMass(double **a);
int _tmain(int argc, _TCHAR* argv[])
{
    double **a;
    a = new double *[8];
    for (int i = 0; i < 8; i++)
        a[i] = new double [8];

    for (int i = 0; i < 8; i++)
        for (int j = 0; j < 8; j++)
            a[i][j] = rand();

    PrintMass(a);
    printf("\n\n");
    TransMass(a);
    PrintMass(a);
    scanf("A");
    for (int i = 0; i < 8; i++)
        delete [] a[i];
    delete [] a;
    return 0;
}
void PrintMass(double **a)
{
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
            printf("%.2f ", a[i][j]);
        printf("\n");
    }
}
void TransMass(double **a)
{
    double buff[8][8];
    for (int i = 0; i < 8; i++)
        for (int j = 0; j < 8; j++)
            buff[j][i] = a[i][j];
    for (int i = 0; i < 8; i++)
        for (int j = 0; j < 8; j++)
            a[i][j] = buff[i][j];
}




--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
DigitSphinx
Дата 10.6.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



кстати здесь за тебя никто делать не будет !
для этого существует центр помощи !
а если у тебя определенный вопрос по си-си++ тогда тебе сюда !

Добавлено через 7 минут и 48 секунд
Voldemar2004, 
Цитата(Voldemar2004 @  10.6.2007,  14:30 Найти цитируемый пост)

for(int i=0; i<8; i++)
    {  for(int j=0; j<8; j++)  
        {   cout<<array[i][j]<<"\t";
             if(j==7){cout<<"\n";//Это не самый быстрый способ !
        };
    }


гораздо лучше так
Код

for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
            printf("%.2f ", a[i][j]);
        printf("\n");
    }



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Ardour
Дата 10.6.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



   Что-то вроде этого


#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); 

PM MAIL   Вверх
DigitSphinx
Дата 10.6.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



Цитата(Ardour @  10.6.2007,  15:34 Найти цитируемый пост)
float print(float *a)   //печать двумерного массива

 smile 
Зачем float ?
Цитата(Ardour @  10.6.2007,  15:34 Найти цитируемый пост)
printf("%4.0f ", *a);

 smile
Зачем 4.0 ?? Сразу бы сделал массив int’ов !



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
TimeBreak
Дата 18.3.2009, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.3.2009

Репутация: -2
Всего: -2



Возник почти аналогичный вопрос ! Подскажите плз .... вот квадратную матрицу Транспонировать без проблем а вот как транспонировать Не Квадратную матрицу скажем 3х4 ??? 
Заранее Благодарен !
PM MAIL   Вверх
zim22
Дата 18.3.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 16
Всего: 69



Цитата(TimeBreak @  18.3.2009,  14:55 Найти цитируемый пост)
т как транспонировать Не Квадратную матрицу

http://ru.wikipedia.org/wiki/Транспонированная_матрица


--------------------
PM MAIL   Вверх
vinter
Дата 18.3.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(TimeBreak @  18.3.2009,  15:55 Найти цитируемый пост)
вот как транспонировать Не Квадратную матрицу скажем 3х4 ??? 

Ты не поверишь. ТОЧНО ТАК ЖЕ!!! И знаешь, что самое интересное? В любом, самом захудалом учебнике, в котором есть матрицы, есть описание транспонирования. И если уж ты решил взаимодействовать с матрицами, так открой учебник и прочитай про них, прежде чем писать на форум. 
Достали всякие ### ### ### ########### ###### и #### ## #### ########


--------------------
Мой блог
PM MAIL WWW   Вверх
andrew_121
Дата 18.3.2009, 16:48 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 0
Всего: 33



Цитата(vinter @  18.3.2009,  16:36 Найти цитируемый пост)
Ты не поверишь. ТОЧНО ТАК ЖЕ!!! И знаешь, что самое интересное? В любом, самом захудалом учебнике, в котором есть матрицы, есть описание транспонирования. И если уж ты решил взаимодействовать с матрицами, так открой учебник и прочитай про них, прежде чем писать на форум. 
Достали всякие ### ### ### ########### ###### и #### ## #### ########

Солидарен. По этому и отвечать не стал!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Ln78
Дата 18.3.2009, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



TimeBreak, уточни: язык C или C++, размерности известны заранее или нет, нужно ли сохранять исходную матрицу, в чём именно у тебя проблема?

Цитата(vinter @  18.3.2009,  16:36 Найти цитируемый пост)
Ты не поверишь. ТОЧНО ТАК ЖЕ!!! И знаешь, что самое интересное? В любом, самом захудалом учебнике, в котором есть матрицы, есть описание транспонирования. И если уж ты решил взаимодействовать с матрицами, так открой учебник и прочитай про них, прежде чем писать на форум. 

vinter, ты не поверишь, но в программировании случай квадратной матрицы и прямоугольной могут отличаться весьма существенно. Например, для прямоугольной может потребаться динамическое выделение памяти, когда для квадратной этого делать не нужно, и задача упрощается на порядок. И знаешь, что самое интересное? В математических книгах об этом нет ни слова. Хорошо, что разобраться в этом помогают форумы, в которых к новичкам относятся дружелюбно. smile 

PM MAIL   Вверх
Anikmar
Дата 18.3.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



ИМХО
Если вопрос я считаю тупым, а задающего вопрос круглым дураком - я либо шучу либо не отвечаю.
Так что Ln78 где-то прав
 smile 

PM MAIL ICQ   Вверх
TimeBreak
Дата 18.3.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.3.2009

Репутация: -2
Всего: -2



2 Ln78 : нужен на С++ ! Размерности задаются с клавиатуры ! Трансформировать квадратную матрицу - без проблем , а вот тот же код для не квадратной матрицы не работает и работать не будет - поетому и задал вопрос ! Сохранять исходную матрицу не обязательно ! 

По моему из всех умников посылающих в книгу понял вопрос только ты ) 
2 Anikmar  - по моему дурило здесь ты ! Такшто шути дальше КЛОУН )
PM MAIL   Вверх
Earnest
Дата 18.3.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 2
Всего: 183



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
...
PM   Вверх
andrew_121
Дата 18.3.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 0
Всего: 33



Цитата(vinter @  18.3.2009,  16:36 Найти цитируемый пост)
### ### ### ########### ###### и #### ## #### ######## 

А можно расшифровочку в приват?  smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0734 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.