首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵二维阵列的转置

矩阵二维阵列的转置
EN

Stack Overflow用户
提问于 2014-12-04 07:44:52
回答 4查看 5.7K关注 0票数 0

请教我如何创建一个C程序,以找到一个由二维(2D)数组表示的5阶矩阵的转置。使用元素初始化2D数组,如下所示,使用初始化程序列表在原始矩阵中显示。显示原始矩阵和转置。程序中必须只有一个二维数组。

示例:

原始矩阵

代码语言:javascript
复制
1    2    3    4       5

6      7       8       9       10

11     12      13      14      15

16     17      18      19      20

21     22      23      24      25

矩阵的转置:

代码语言:javascript
复制
1      6       11      16      21

2      7       12      17      22

3      8       13      18      23

4      9       14      19      24

5      10      15      20      25
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-04 07:50:50

由于程序中必须只有一个数组,一种有效的方法是在适当的情况下转换矩阵,这可以通过以下嵌套循环来完成。

代码语言:javascript
复制
for( int i = 0; i < n; i++)
{
    for ( j = i+1; j < n; j++ ) // only the upper is iterated
    {
        swap(&(a[i][j]), &(a[j][i]));
    }
}

下面的子例程将执行交换,其中使用指向int的指针。在上面的调用代码中,这些都是通过使用要交换的元素的地址来获得的。

代码语言:javascript
复制
void swap(int* arg1, int* arg2)
{
    int buffer = *arg1;
    *arg1 = *arg2;
    *arg2 = buffer;
}
票数 2
EN

Stack Overflow用户

发布于 2017-01-10 14:45:30

可按以下方式计算给定矩阵的转置:

代码语言:javascript
复制
#include<stdio.h>
void main()
{
    int c,r,i,j;
    printf("Enter number of rows and columns : ");
    scanf("%d %d",&r,&c);
    int arr[r][c];
    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            printf("\nEnter element : ");
            scanf("%d",&arr[i][j]);
        }
    }
    printf("\nOriginal array is : \n");
    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            printf("%d\t",arr[i][j]);
        }
        printf("\n");

    }
    printf("\nTranspose array is : \n");
    for(i=0;i<c;i++)
    {
        for(j=0;j<r;j++)
        {
            printf("%d\t",arr[j][i]);
        }
        printf("\n");

    }
}
票数 3
EN

Stack Overflow用户

发布于 2014-12-04 14:04:14

代码语言:javascript
复制
int array[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};

//transpose
cout<<"TRANSPOSE"<<endl;
for(int i=0;i<=4;i++){   
  for(int j=0;j<=4;j++)  {      
    if(array[i]>array[j]){           
      int temp;              
      temp=array[i][j];               
      array[i][j]=array[j][i];                
      array[j][i]=temp;
    }      
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27288694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档