Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Transponieren einer Matrix (Felder)

Schreiben Sie ein Programm, das die Einträge eines zweidimensonalen Arrays (Tabelle) an der Hauptdiagonalen (von links oben nach rechts unten) spiegelt. Im mathematischen Kontext nennt sich das Resultat die transponierte Matrix.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

4 Lösung(en)

/**
 * Transponieren einer Matrix (= Spielgung an der Diagonalen)
 * 
 * @author Philipp Gressly (phi AT gressly DOT ch)
 */
public class Transponieren {

    public Object[][] transponieren(Object[][] matrix) {
        int anzahlSpalten = getBreite(matrix);
        int anzahlZeilen  = getHoehe(matrix);
        Object[][] transponierte;
        transponierte = new Object[anzahlSpalten][anzahlZeilen];
        int zeile = 0; // Von oben nach unten im Original =
        // Von links nach rechts im Resultat;
        while (zeile < anzahlZeilen) {
            int spalte = 0;
            while (spalte < anzahlSpalten) {
                Object wert = getWert(matrix, spalte, zeile);
                transponierte[spalte][zeile] = wert;
                spalte = spalte + 1;
            }
            zeile = zeile + 1;
        }
        return transponierte;
    }

    public void printMatrix(Object[][] matrix) {
        int zeile = 0;

        while (zeile < getHoehe(matrix)) {
            int spalte = 0;
            while (spalte < getBreite(matrix)) {
                System.out.print(getWert(matrix, spalte, zeile));
                spalte = spalte + 1;
                if (spalte < getBreite(matrix)) {
                    System.out.print(", ");
                }
            }
            System.out.println();
            zeile = zeile + 1;
        }
    }

    int getHoehe(Object[][] matrix) {
        return matrix.length;
    }

    int getBreite(Object[][] matrix) {
        int breite = 0;
        int reihe = 0;
        while (reihe < getHoehe(matrix)) {
            Object[] zeile = matrix[reihe];
            if (zeile.length > breite) {
                breite = zeile.length;
            }
            reihe = reihe + 1;
        }
        return breite;
    }

    Object getWert(Object[][] matrix, int spalte, int zeile) {
        Object[] reihe = matrix[zeile];
        if (reihe.length > spalte) {
            return reihe[spalte];
        }
        return null;
    }

    // Tests
    public static void main(String[] args) {
        new Transponieren().testSixPack();
        new Transponieren().testUnvollstaendig();
    }

    public void testSixPack() {
        Object[][] m = { { 1, 2, 3 }, { 6, 8, 9 } };
        printMatrix(m);
        Object[][] transponierte = transponieren(m);
        printMatrix(transponierte);
    }

    public void testUnvollstaendig() {
        Object[][] m = { { 1, 2, 3 }, { 6, 8 }, { 33, 22, 1, 4 }, { 6, 5, 3 } };
        printMatrix(m);
        Object[][] transponierte = transponieren(m);
        printMatrix(transponierte);
    }
    
} // end of class Transponieren
                
def transponieren(a):
    c=[]
    for j in range(0,len(a[0])):
        b=[]
        for i in range(0,len(a)):
            b.append(a[i][j])
        c.append(b)
    
    return c


a = [[3,5],[4,2],[7,8]]    
aT = transponieren(a)
print(aT)
print(transponieren(aT))
                

Lösung von: Alex Groeg (Freies Lernen)

function transpose(matrix) {
  let t = [],   // [t]ransposed
      x, y;
  for (x = 0; x < matrix[0].length; x++) {
    t.push([]);
    for (y = 0; y < matrix.length; y++)
      t[x].push(matrix[y][x]);
  }
  return t;
}

let matrix = [ [3,5], [4,2], [7,8] ];
console.table(transpose(matrix));                            // lissalanda@gmx.at
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

// NET 6.x | C# 10.x | VS-2022

List<List<int>> matrix = new() { new() { 3, 5 }, new() { 4, 2 }, new() { 7, 8 } };

var transposed = matrix.SelectMany(inner => inner.Select((item, index) => new { item, index })).GroupBy(i => i.index, i => i.item).Select(x => x.ToList());

transposed.ToList().ForEach(x => Console.WriteLine(string.Join(", ", x)));
// 3, 4, 7
// 5, 2, 8
                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

Das Transponieren der Matrix

\begin{displaymath} \left( \begin{array}{cc} 3 & 5 \\ 4 & 2 \\ 7 & 8 \\ \end{array} \right) \end{displaymath}

liefert:

\begin{displaymath} \left( \begin{array}{ccc} 3 & 4 & 7 \\ 5 & 2 & 8 \\ \end{array} \right) \end{displaymath}

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: k.A.
Webcode: wmjo-fn97
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen