Ich habe ein paar Probleme mit einer Matrix-Transponier-Frage aus einem Lehrbuch Ich bin Lernen C von.C: Transponierte Matrix, Segmentierungsfehler
Wenn der Code ausgeführt wird, gibt er eine große Menge willkürlicher Zahlen aus, gefolgt von "Segmentation fault (core dumped)".
Wenn man sich andere Antworten auf ähnliche Fragen ansieht, betreffen die meisten von ihnen Zeiger/Flags, aber das Buch hat diese Stufe noch nicht erreicht, so dass das Problem ohne sie gelöst werden sollte.
Q. Schreiben Sie eine Funktion transposeMatrix, die als Argument eine 4x5-Matrix und eine 5x4-Matrix verwendet. Lassen Sie die Funktion die 4x5-Matrix transponieren und speichern Sie die Ergebnisse in der 5x4-Matrix. Schreiben Sie auch eine Hauptroutine, um die Funktion zu testen.
#include <stdio.h>
void transposeMatrix (int matrix1[4][5], int matrix2[5][4])
{
int i, j;
for(i = 0; i < 4; ++i) {
for(i = 0; i < 5; ++i) {
matrix2[j][i] = matrix1[i][j];
}
}
for(i = 0; i < 5; ++i) {
for(j = 0; j < 4; ++i) {
printf("%i ", matrix2[i][j]);
}
printf("\n");
}
}
int main (void)
{
void transposeMatrix (int matrix1[4][5], int matrix2[5][4]);
int imatrix2[5][4];
int imatrix1[4][5] =
{
{5, 6, 7, 8, 9},
{1, 2, 3, 4, 5},
{5, 4, 3, 2, 1},
{9, 8, 7, 6, 5}
};
transposeMatrix(imatrix1, imatrix2);
return 0;
}
Bei Ihrer ersten 'for' Schleife verwenden beide Loops' i', die nicht funktionieren. Du brauchst auch 'j'. –
'void transposeMatrix (int matrix1 [4] [5], int matrix2 [5] [4]);' ist in 'main()' nicht notwendig. –
Und die zweite innere Schleife erhöht "i", wenn sie "j" erhöhen soll. –