C :: Aufgabe #44 :: Lösung #2
3 Lösungen

#44
Matrizen um 90 Grad drehen
Anfänger - C
von pocki
- 11.11.2013 um 16:38 Uhr
Erstelle ein Programm, welches als Eingabe eine Matrix beliebiger Größe entgegennimmt und diese dann um 90 Grad dreht.
Beispiel an einer 4x4 Matrix:
Eingabematrix mit den Elementen:
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
sollte diese Ausgabematrix erzeugen:
a41 a31 a21 a11
a42 a32 a22 a12
a43 a33 a23 a13
a44 a34 a24 a14
Das Programm sollte für unterschiedlich großen und auch mit nicht quadratischen Matrizen funktionieren.
Beispiel an einer 4x4 Matrix:
Eingabematrix mit den Elementen:
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
sollte diese Ausgabematrix erzeugen:
a41 a31 a21 a11
a42 a32 a22 a12
a43 a33 a23 a13
a44 a34 a24 a14
Das Programm sollte für unterschiedlich großen und auch mit nicht quadratischen Matrizen funktionieren.
#2

von 0.bit.0 (50 Punkte)
- 07.03.2014 um 15:09 Uhr

/* * Dieses kleine Programm soll als erstes zwei Parameter entgegen nehmen, die die Dimension der * Matrix festlegen. Anschliessend sollen die Zahlen in der Reihenfolge: Zeile 1, Spalte 1, * Zeile 1,Spalte 2, ...Zeile m, Spalte n eingelesen werden. Dann wird einmal zur Kontrolle * die Ursprungsmatrix ausgegeben. Dann wird die Matrix um 90 Grad (nach rechts) gedreht und ausgegeben. */ #include <stdio.h> // Diese Funktion gibt einfach einen als zweidimensionales Array uebergebenen Wert in Matrixform aus. void return_matrix (int *p, int z, int s){ int i, j; for (i = 0; i < z; i++){ for (j = 0; j < s; j++){ printf ("%d ",*p++); } printf ("\n"); } } // Diese Funktion dreht ein zweidimensionales Array und gibt es aus void drehe_matrix (int *g, int z, int s){ int tmp_array [s][z]; int i,j; for (i = 0; i < z; i++){ for (j = 0; j < s; j++){ tmp_array[j][z-(i+1)] = *g++; } } return_matrix (tmp_array[0],s,z); } /* Mit dieser Funktion wird das zweidimensionale Array mit Werten (durch Benutzereingaben) gefuellt. * Anschliessend werden die Funktionen zur Ausgabe und die zum Drehen des Array aufgerufen. */ void mach_array (int z, int s){ int gesamt [z][s]; int i; for (i = 0; i < z; i++){ int j; for (j = 0; j < s; j++){ printf ("Bitte geben Sie nun den Wert fuer die %d Zeile und die %d Spalte ein\n", (i+1), (j+1)); scanf ("%i", &gesamt [i][j]); getchar(); } } printf ("Matrix im Urzustand: \n"); return_matrix (gesamt[0],z,s); printf ("\nUnd die Matrix in dem um 90 Grad nach rechts gedrehten Zustand:\n"); drehe_matrix (gesamt[0],z,s); } /*Diese Funktion nimmt zwei Benutzereingaben zur Dimensionierung entgegen und *ruft dann die Funktion mach_Array auf */ void mk_array (){ int zeile, spalte; printf ("Geben Sie bitte die Zeilenanzahl ein: \n"); scanf ("%i",&zeile); getchar(); printf ("Die Zeilenanzahl ist: %i\n",zeile); printf ("\nGeben Sie nun bitte die Spaltenanzahl ein: \n"); scanf ("%i", &spalte); getchar(); printf ("Die Spaltenanzahl ist: %i\n\n", spalte); mach_array (zeile,spalte); } int main (){ mk_array(); return 0; }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1