如何从此代码中获取转置矩阵? [英] How can I get transpose matrix from this code?

查看:72
本文介绍了如何从此代码中获取转置矩阵?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个家庭工作找到转置矩阵



我尝试过:



i have a home work to find the transpose matrix

What I have tried:

#include <stdio.h>
#include <stdlib.h>

typedef struct Matriks
{
 int M;			
 int N;
 int *data;		//
} Matriks;

Matriks newMatriks(int N, int M){		//
 Matriks hasil;
 
 hasil.N=N;
 hasil.M=M;
 hasil.data=(int*) malloc(sizeof(int)*N*M);

 return hasil;
}

int getElement(Matriks m, int i, int j){
 return *(m.data + i*(m.N) + j);
}

void setElement(Matriks m, int i, int j, int val){
 *(m.data + i*(m.N) + j) = val;
}

void printMatriks(Matriks m) {			
 int i,j;
 for (i = 0; i < m.N; ++i) {
  for (j = 0; j < m.M; ++j) {
   printf("%d ", getElement(m, i, j));
  }
  printf("\n");
 }
}

void transpose(int i, int j, Matriks m){
	
}

Matriks merge (Matriks A, Matriks B){
 Matriks hasil=newMatriks(2, A.M);
 
 int i;
 for (i=0; i<A.M; i++){
  setElement(hasil, 0, i, getElement(A, 0, i));
  setElement(hasil, 1, i, getElement(B, 0, i));
 }

 return hasil;
}

int main(){		
 int i;			
 
 Matriks a = newMatriks(1,6);
 printf("masukkan p1:");
 for (i = 0; i < 6; ++i) {
  int val; 
  scanf("%d", &val);
  setElement(a, 0, i, val);
 }

 Matriks b = newMatriks(1,6);
 printf("masukkan p2:");
 for (i = 0; i < 6; ++i) {
  int val; 
  scanf("%d", &val);
  setElement(b, 0, i, val);
 }

 Matriks c = merge(a,b);
 printMatriks(c);
 
}

推荐答案

转置:行数据成为列数据。



Transpose - Wikipedia [ ^ ]



应该足以实现/ 开始工作

Transpose: Row data become column data.

Transpose - Wikipedia[^]

Should be enough to implement/start working
void transpose(int i, int j, Matriks m)
{
   // TODO
}



如果您遇到_specific_问题请回复。



void transpose(int i,int j,Matriks m)应该更多 void transpose(int i,int j,Matriks& m)


merge 代码之后,我认为这段代码是一个更好的开始:

Following your merge code, I think this code is a better start:
Matriks  transpose(Matriks A){
	//Your code
}

// usage
Matriks c = transpose(a);



没有理由拥有 i j 作为参数。

只需重复使用示例代码,即可获得90%答案,但你必须工作一点(这很容易)。



我们不做你的家庭作业。

HomeWork我们不会在乞求其他人做你的工作时测试你的技能,它会让你思考并帮助你的老师检查你对你所学课程的理解以及你应用它们时遇到的问题。

你的任何失败都会帮助你的老师发现你的弱点并设定补救措施。

所以,试一试,重读你的课程并开始工作。如果您遇到特定问题,请显示您的代码并解释这个问题,我们可能会提供帮助。



作为程序员,您的工作是创建算法解决特定问题,你不能依赖别人永远为你做,所以有一段时间你必须学会​​如何。而且越快越好。

当你要求解决方案时,就像试图通过培训其他人来学习开车一样。

创建算法基本上是找到数学并做出必要的调整以适应你的实际问题。



发展的概念就像这个词所暗示的那样:系统地使用科学和满足特定目标或要求的技术知识。 BusinessDictionary.com [ ^ ]

这与有一个不一样快速谷歌并放弃,如果我找不到正确的代码。


There is no reason to have i and j as parameter.
Just by reusing pieces of your sample code, you get 90% of the answer, but you have to work a little (and it is easy).

We do not do your HomeWork.
HomeWork is not set to test your skills at begging other people to do your work, it is set to make you think and to help your teacher to check your understanding of the courses you have taken and also the problems you have at applying them.
Any failure of you will help your teacher spot your weaknesses and set remedial actions.
So, give it a try, reread your lessons and start working. If you are stuck on a specific problem, show your code and explain this exact problem, we might help.

As programmer, your job is to create algorithms that solve specific problems and you can't rely on someone else to eternally do it for you, so there is a time where you will have to learn how to. And the sooner, the better.
When you just ask for the solution, it is like trying to learn to drive a car by having someone else training.
Creating an algorithm is basically finding the maths and make necessary adaptation to fit your actual problem.

The idea of "development" is as the word suggests: "The systematic use of scientific and technical knowledge to meet specific objectives or requirements." BusinessDictionary.com[^]
That's not the same thing as "have a quick google and give up if I can't find exactly the right code".


这篇关于如何从此代码中获取转置矩阵?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆