Цель состоит в том, чтобы напечатать транспонирование «Матрицы».
Чтобы создать квадратную матрицу, я получил «строку» с клавиатуры. строка такая же, как и столбец, поэтому я объявил только строку.
проблема, в которой мне нужна помощь, находится прямо под ↓
/*input*/
5 4 1
9 0 1
6 5 7
/*output I want*/
5 9 6
4 0 5
1 1 7
/*wrong output I get*/
0 4 -30838770
0 7 2
0 5 7
И вот мой код. Матрица в каждой функции должна вызываться по ссылке. Я также хочу знать, правильно ли я понял.
//code start
int Generate(int row, int (*Matrix)[row])
{
srand(time(NULL)); //make random number
int i, j;
printf("Matrix = ");
for(i=0; i<row; i++){
for(j=0; j<row; j++){
Matrix[i][j] = (rand() % 10); //insert random number from 0 to 10
printf("%d ", Matrix[i][j]); //print matrix before transposing
}
printf("\n");
}
return 0;
}
void Transpose(int row, int (*Matrix)[row])
{
int i, j;
for(i=0; i<row; i++){
for(j=0; j<row; j++){
int transpose[i][j];
transpose[i][j] = Matrix[j][i];
printf("%d ", transpose[i][j]);
}
printf("\n");
}
}
int main() {
int input; //for switch case
int row = 0; //row has to be 2 or 3
int Matrix[row][row]; //2d array. largest index should be Matrix [row-1][row-1]
while(1){
scanf("%d", &input);
switch(input){
case 1: // Generate random square matrix
scanf("%d", &row); //insert row
Generate(row, Matrix);
break;
case 2: //transpose matrix
Transpose(row, Matrix);
break;
default:
return 0;
}
}
}
//code end
Я новичок в этом сообществе, поэтому не уверен, что дал вам всю необходимую информацию.
Пожалуйста, дайте мне знать строки, которые вы не понимаете, потому что я действительно хочу, чтобы этот код работал.
Жду вашей помощи!