Aufgabe: Matritzen einlesen ??Speichern der Werte??
-
Du liest ein Element ein (woher eigentlich?) und schreibst es mit hilfe deiner Funktion (setzeElement) in die Matrix.
Das machst du innerhalb zweier verschachtelter Schleifen (für Zeilen und Spalten)
-
Die Eingabe erfolgt durch den Benutzer.
So etwas hatte ich mir auch überlegt:
int ieins, izwei; //... if ( ieins = 0, ieins < na, ieins ++) { if (izwei = 0, izwei < ma, izwei ++) { printf("Bitte das Element A(%d,%d) eingeben:", izwei + 1, ieins + 1); scanf("%d", &a[izwei][ieins]); } }
Leider wird hier nur ein Wert eingelesen und die Eingabe beendet.
Hierbei sind ma und na die Dimensionen der Matrix A in der Form m x n.
-
hans123456 schrieb:
int ieins, izwei; //... if ( ieins = 0, ieins < na, ieins ++) { if (izwei = 0, izwei < ma, izwei ++) { printf("Bitte das Element A(%d,%d) eingeben:", izwei + 1, ieins + 1); scanf("%d", &a[izwei][ieins]); } }
Sollen die
if
evtl.for
sein?
Und die Kommas dann Semikolons ?Es gibt keine if-Schleifen.
-
Stimmt, Danke.
Die Eingabe funktioniert soweit wie gewünscht, allerdings wird das Element der Matrix nicht korrekt ausgegeben.
Ist die Speicherung (Zeile 7) so korrekt?int ieins, izwei; //... for ( ieins = 0; ieins < na; ieins ++) { for (izwei = 0; izwei < ma; izwei ++) { printf("Bitte das Element A(%d,%d) eingeben:", izwei + 1, ieins + 1); scanf("%d", &a[izwei][ieins]); } }
-
Wie ist a definiert?
Wie gibst du das aus?
-
Definition a:
int a [5][5]={0};
Ausgabe der Matrix A:
for (idrei = 0; idrei < ma; idrei ++) { for (ivier = 0; ivier < na; ivier ++){ printf("| %d ",a[ma][na]); } printf(" \n"); }
-
Schau mal genau hin.
Du gibst immer nur das Selbe Element aus.
Und das existiert noch nicht mal (wenn ma == mb == 5 ist)
-
Ersetze mb durch na
-
printf("| %d ",a[idrei][ivier]);
-
So,
bin grad dabei eine eigene Bibliothek zu erstellen und möchte dort einen eigenen Datentyp für die Matritzen definieren.
Ich komme zu diesem ergebins in der Headerdatei:typedef struct { int mmatrix, nmatrix, matirx[5][5]; // 5x5-Matrix, Vorgabe } mat;
Die Benutzung des Typs mat soll in der main wie folgt aussehen:
mat matrixA = {0}, matrixB = {0}, matrixC = {0};
Ist diese Schreibweise korrekt?
-
Ja, wen du alles mit 0 initialisiert haben möchtest.
Gibt es Probleme?
-
Ja,
Fehlermeldung Visual Studio Zeile 6: "mat matrix A: Es ist keine passende Konvertierungsform von mat in *mat vorhanden"// Abfrage der Elemente von A und B: for ( ieins = 0; ieins < na; ieins ++) { for (izwei = 0; izwei < ma; izwei ++) { printf("Bitte das Element A(%d,%d) eingeben:", izwei + 1, ieins + 1); scanf("%d", element); setzeElem (matrixA, ieins, izwei, element); } }
Die Funktion:
void setzeElem( mat *m, int posx, int posy, int wert ){ m -> matrix [posx] [posy] = wert ; return; }
Offenbar soll ich einen Zeiger auf die Matrix A (Typ mat) übergeben.
Wie erstelle ich einen solchen Zeiger auf Matrix A?
-
Mit dem Adressoperator &.
Der fehlt auch beim scanf.
In deinem Beitrag vom 16:28:08 05.12.2012 war er noch drin.
-
d.h. es müsste wie folgt funktionieren?
// Abfrage der Elemente von A und B: for ( ieins = 0; ieins < na; ieins ++) { for (izwei = 0; izwei < ma; izwei ++) { printf("Bitte das Element A(%d,%d) eingeben:", izwei + 1, ieins + 1); scanf("%d", &element); setzeElem (&matrixA, ieins, izwei, element); } }
-
Ja.
Aber mit einem Compilerlauf wäre die Frage schneller beantwortet gewesen.
Auch wenn du gleich alles gezeigt hättest. Denn die Fehler lagen bei deinen Problemen nie da wo du sie vermutet hast.
-
Das Programm läuft, vielen Dank für die schnelle Hilfe!