C :: Aufgabe #44 :: Lösung #1

3 Lösungen Lösungen öffentlich
#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.
#1
vote_ok
von devnull (8870 Punkte) - 24.11.2013 um 17:56 Uhr
Quellcode ausblenden C-Code
/****************************************
  * matrot.c   Matrix rotieren
  * devnull    23-11-2013
  ****************************************/
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

/*
   Originalmatrix : M x N
   rotierte Matrix: N x M
*/ 
#define ARRAY_SIZE 10  
#define M 4            
#define N 5

void mtx_print(int a[][ARRAY_SIZE], int m, int n)
{
	int i,j;

	for (i=0; i<m; i++) {
		for (j=0; j<n; j++)
			printf("%4d", a[i][j]);
		printf("\n");
	}
    printf("\n");	
}

void mtx_fill(int a[][ARRAY_SIZE], int m, int n)
{
	int i,j;

    srand(time(NULL));	
	for (i=0; i<m; i++)
		for (j=0; j<n; j++)
			a[i][j] = rand() & 0777;
}

void mtx_rotate(int a[][ARRAY_SIZE], int b[][ARRAY_SIZE], int m, int n)
{
	int i,j;

	for (i=0; i<m; i++)
		for (j=0; j<n; j++)
			b[j][m-i-1] = a[i][j];
}
 
int main( int argc, char **argv )
{
	int a[ARRAY_SIZE][ARRAY_SIZE];
	int b[ARRAY_SIZE][ARRAY_SIZE];
	
	mtx_fill(a, M, N);
	mtx_print(a, M, N);
	mtx_rotate(a, b, M, N);
	mtx_print(b, N, M);
    return 0;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben