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

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.
#3
vote_ok
von zefcat (290 Punkte) - 15.12.2016 um 16:20 Uhr
Quellcode ausblenden C-Code
#include <stdio.h>

int main ()
{

    char matrix_1 [4][4] = {"----","-o--","ooo-","----"};
    char matrix_2 [4][4] = {"----","-oo-","oo--","----"};
    char matrix_3 [4][4] = {"----","-o--","-o--","-oo-"};
    char matrix_4 [4][4] = {"--o-","--o-","--o-","--o-"};

    char matrixsafe_1 [4][4];
    char matrixsafe_2 [4][4];
    char matrixsafe_3 [4][4];
    char matrixsafe_4 [4][4];

    int turn_counter = 0;
    int rotate_counter = 0;
    int first;
    int second;




    for(turn_counter=0; turn_counter<5; turn_counter++)
    {

        for(first = 0; first < 4; first++)
        {

        for(second = 0; second < 4; second++)
            {
                printf("%c ",matrix_1[first][second]);
            }
            printf(" ");

            for (second = 0; second < 4; second++)
            {
                printf("%c ",matrix_2[first][second]);
            }printf(" ");

            for (second = 0; second < 4; second++)
            {
                printf("%c",matrix_4[first][second]);
                if (second<3)
                {
                    printf(" ");
                }
            }
            printf("\n");
        }
            if (turn_counter >= 4)
            {
                break;
            }
        printf("\n");

        for (first = 0; first < 4; first++)
        {

            for (second = 0; second < 4; second++)
            {
                matrixsafe_1[first][second] = matrix_1[first][second];
                matrixsafe_2[first][second] = matrix_2[first][second];
                matrixsafe_3[first][second] = matrix_3[first][second];
                matrixsafe_4[first][second] = matrix_4[first][second];
            }
        }

        for (first = 0; first < 4; first++)
        {
            rotate_counter = 3;
            for (second = 0; second < 4; second++)
            {
                matrix_1[first][second] = matrixsafe_1[rotate_counter][first];
                matrix_2[first][second] = matrixsafe_2[rotate_counter][first];
                matrix_3[first][second] = matrixsafe_3[rotate_counter][first];
                matrix_4[first][second] = matrixsafe_4[rotate_counter][first];
                rotate_counter--;
            }
        }
    }

    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