![]() |
Matrizen (Erstellen, Rechnen)
Hallo, bin neu hier und weiß nicht ob das hier überhaupt das richtige Forum für meine Frage ist, deshalb entschuldige ich mich schon mal im Voraus, falls es so sein sollte.
Folgendes, ich möchte ein Programm schreiben, bei dem einige Berechnungen mit Matrizen durchgeführt werden müssen(Inverse Matrix bilden, Multiplikation zweier Matrizen). Diese Rechnungen sollen im Hintergrund ablaufen, der Benutzer soll auch keine Matrix als Matrix eingeben, ebenso muss die Matrix am Ende nicht als solche ausgegeben werden. Er soll z.B. in eine Edit-Komponente 4 Ziffern eingeben, die dann für die Berechnung in eine 2x2-Matrix umgewandelt werden sollen. Bsp.: Eingabe: 1 2 3 4 Matrix A: 1 2 3 4 In eine zweite Edit-Komponente gibt er beliebig viele Ziffern ein, z.B. 10, welche dann in eine 5x2-Matrix umgewandelt werden sollen. Bsp.: Eingabe: 1 2 3 4 5 6 7 8 9 0 Matrix B: 1 2 3 4 5 6 7 8 9 0 Die zweite Matrix soll also immer 2 Spalten haben und AnzahlZeichen/2 Zeilen. Mat B soll dann mit Mat A multipliziert werden Mat B * Mat A = 7 10 15 22 23 34 31 46 9 18 Diese Matrix soll dann am Ende z.B. in einer Edit-Komponente so ausgegeben werden: 7 10 15 22 23 34 31 46 9 18 Hat jemand irgendeine Idee wie man das umsetzen kann? |
AW: Matrizen (Erstellen, Rechnen)
Ich würde zur Eingabe / Ausgabe ein StringGrid nehmen und zur Bearbeitung bieten sich Arrays an (TMatrix = array of array of double).
|
AW: Matrizen (Erstellen, Rechnen)
1. Herausfinden, wie viele Zahlen / "Wörter" im Edit-Feld stehen. Eventuell Warnhinweis oder Autokorrektur wenn zu viele oder zu wenige Zahlen.
2. Die Zahlen in einer Schleife auslesen, von String nach Single oder Double konvertieren (StrToFloat) und in einem Array ablegen. 3. Dasselbe mit dem zweiten Edit-Feld machen. 4. Matrixmultiplikation auf den Arrays durchführen. 5. Ergebnis nach String konvertieren (FloatToStr oder Format) und in Edit-Feld schreiben. Je nachdem, welche Delphi-Version du hast, gibt es die Unit System.Math.Vectors, die 3x3 und 4x4 Matrizen implementiert (bietet aber keine Konversion von/zu String). Kannst du dir ja mal anschauen. Ein StringGrid zur Darstellung wie von Bjoerk vorgeschlagen halte ich auch für schöner als ein Edit-Feld. |
AW: Matrizen (Erstellen, Rechnen)
es gibt schon zahlreiche freie Lösungen zu diesem Thema in Delphi
z.B. ![]() |
AW: Matrizen (Erstellen, Rechnen)
Da sich das nach einer Schulaufgabe anhört sind externe Libraries für ihn wahrscheinlich keine Option.
Sind es immer fest zwei Spalten oder soll Matrixmultiplikation für beliebige Matrizen gehen? Und immer interessant zu wissen: Über welche Delphi-Version sprechen wir? |
AW: Matrizen (Erstellen, Rechnen)
Zitat:
Oder soll die erste Matrix immer quadratisch sein? |
AW: Matrizen (Erstellen, Rechnen)
Ich würde es einfach genau so machen, wie du es in deinem Beitrag schon intuitiv gemacht hast: Einfach ein mehrzeiliges Textfeld (TMemo), mit Leerzeichen oder Tabs zwischen den einzelnen Spalten und Zeilenumbruch zwischen den Zeilen. Genauer gesagt habe ich sowas glaube ich schon mal genau so umgesetzt, wenn ich mich recht erinnere. Sieht vielleicht weniger schick aus, ist aber in der Praxis viel bequemer als mit irgendeinem Stringgrid herumzufummeln.
|
AW: Matrizen (Erstellen, Rechnen)
Warum sollte mit dem StringGrid da irgendwas fummelig sein?
Im Gegenteil, denn da habe ich auch schon die Dimensionen der Matrix als Information, ist doch super. Bei einem Memo müsste ich die Eingaben erst parsen, beim StringGrid nehme ich nur
Delphi-Quellcode:
pro Zelle und der Drops ist gelutscht.
StrToFloat
|
AW: Matrizen (Erstellen, Rechnen)
Danke schon mal für die vielen Antworten.
Vorweg, es handelt sich dabei nicht um eine Schulaufgabe, bin lediglich aus dem Matheunterricht darauf gekommen, dieses Programm zu entwickeln. Zu der Frage warum die Eingabe über ein Edit Feld laufen soll ist: Die einzugebenen Zahlen stehen für ein Wort, wobei A=1,B=2,C=3,...,Z=26 bedeuten und das Wort "Hallo" kann man ja schlecht in eine String Grid Komponente schreiben. Die erste Matrix soll dabei die Codierungsmatrix sein, anfangs als 2x2 Matrix für ein 4-stelliges Passwort. Die zweite Matrix stellt ein Wort dar, dass in einen Zahlencode umgewandelt wird. Am Ende soll das Programm also quasi nen Text verschlüsseln und man kann ihn nur entschlüsseln und lesbar machen wenn man das Passwort, also die Codierungsmatrix kennt. Ich wollte aber erst mal anfangen Zahlen zu verschlüsseln. Zur Delphi Version kann ich nichts sagen, da ich das ganze über Lazarus mache(installiert vor 2 Jahren) |
AW: Matrizen (Erstellen, Rechnen)
Ah, schön zu hören :thumb:
Wo genau liegt denn konkret dein Problem? Dein Plan bis jetzt klingt doch relativ ausgereift. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz