Member 13154508 Ответов: 2

Как я могу получить транспонированную матрицу из этого кода?


у меня есть домашняя работа, чтобы найти транспонирующую матрицу

Что я уже пробовал:

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

2 Ответов

Рейтинг:
2

Patrice T

Следуя вашему merge код, я думаю, что этот код-лучшее начало:

Matriks  transpose(Matriks A){
	//Your code
}

// usage
Matriks c = transpose(a);

Нет никакой причины иметь i и j в качестве параметров.
Просто повторно используя фрагменты вашего примера кода, Вы получаете 90% ответа, но вам нужно немного поработать (и это легко).

Мы не делаем вашу домашнюю работу.
Домашнее задание предназначено не для того, чтобы проверить ваши навыки просить других людей выполнять вашу работу, а для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание пройденных вами курсов, а также проблем, возникающих при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по их исправлению.
Так что попробуйте, перечитайте свои уроки и начинайте работать. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это все равно что пытаться научиться водить машину, обучая кого-то другого.
Создание алгоритма-это в основном поиск математики и необходимая адаптация к вашей реальной задаче.

Идея "развития" заключается в том, что это слово предполагает: "систематическое использование научно-технических знаний для достижения конкретных целей или требований." BusinessDictionary.com[^]
Это не то же самое, что "быстро гуглите и сдавайтесь, если я не могу найти точно правильный код".


Рейтинг:
1

0x01AA

Транспонирование: данные строк становятся данными столбцов.

Транспонирование-Википедия[^]

Должно быть достаточно для реализации/начать работать

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

В случае, если вы столкнетесь с _специфической_ проблемой, перезвоните.
[Редактировать]
void transpose(int i, int j, Matriks m) должно быть больше void transpose(int i, int j, Matriks& m)