einlesen von matritz-werten

NetzUnity und Informatik-forum wurden zusammengelegt. Eine entsprechende Ankündigung wird demnächst noch folgen. Für 2025 ist hier einiges geplant! Bei Fragen bitte per DM an Maximilian Rupp wenden.
  • hallo und zwar hab ich ein problem.....

    ich habe eine nxn matrize zu erstellen....

    ist ja kein problem muss ich ,mit arrays machen....und sie dann zu multiplieziren scaff ich auch noch.....hoff ich zmindest

    nur wie kann ich werte in die matrize einlesen?

    weil es sind ja immer n werte..also einmal 9 einmal 16....

    bitte um hilfe
    grüße christophe

  • je nach Programmiersprache schaut das natürlich überall ein bisserl anders aus, aber in C und Java gehts mit zwei for-Schleifen:

     dimension = ...
    for (int i=0; i < dimension; i++)
    {
    for (int k=0; k < dimension; k++)
    {
    matrix[i][k] = einlesen();
    }
    }

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Ohne Angabe der Programmiersprache in der du arbeitest und der Datenquelle aus der deine Werte für die Matrix kommen ist das ganze zwar recht allgemein, aber ich probiers mal:

    Normalerweise wird eine Matrix als zweidimensionales Array repräsentiert, wobei ein Array deine Spalten und das andere deine Zeilen darstellt.

    Was das Einlesen der Werte angeht kommt es darauf an, wo sie herkommen. Im Allgemeinen lässt du eine verschachtelte Schleife über deine Matrix laufen und liest in dieser die Werte.

    Code
    zB: 
    for (zeile=0, maxzeilen, zeile++) {
            for (spalte=0, maxspalten, spalte++) {
               matrix[zeile][spalte] = wert;
            }
    }


    wobei "wert" von deiner Datenquelle gelesen werden muss.

    hoffe mehr geholfen als verwirrt zu haben
    lg
    Sysmaniac

    Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke

  • hallo....danke für eure antwort.....

    ist das richtig, dass ich für das "einlesen()" eine eigene methode programmieren muss...?

    weil die werte der matritze muss ich in der form.....

    a11, a12, ... , a1n, a21, ... , a2n, ... , ann, b11, b12, ... , b1n, b21, ... , b2n, ... , bnn.


    danke für eure antwort
    lg christophe...


    das ganze übrigens in JAVA :)

  • Wenns um EPROG geht, dann kann man einlesen() durch EprogIO.readInt() mit try...catch rundherum ersetzen, also in etwa

    Code
    try {
     	matrix[i][k]=EprogIO.readInt();
     } catch (EprogException exc) {
     	inputError = true;
     }



    wenns nicht um EPROG geht, dann muss man ein bisschen basteln... eine eingene Methode für einlesen() wäre dann wahrscheinlich sinnvoll.
    Das könnte dann so in etwa ausschauen (is nur ganz schnell zusammengebastelt, eher ein Denkanstoß)

    Code
    int einlesen() throws NumberFormatException {
     	BufferedReader in = new BufferedReader (new 		    InputStreamReader(System.in));
     	String input = in.readLine();
     	int retval = Integer.parseInt(input);
     	return retval;
     }

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • hallo jeuneS2!!

    danke vielmasl für deine bemühungen mir weiter zu helefn :)

    hier ist meine angabe......
    passt das dann so wie du es mir schon erklärt hast?
    und wie kann ich die matrix dann wieder ausgeben...gibts da auch einen trick?

    hier die angabe

    Eingabedaten:
    Lesen Sie zuerst die Dimension (n) der Matrizen ein; diese muß > 0 und < 8 sein.
    Danach werden die Elemente der Matrizen eingelesen, und zwar in der Reihenfolge a11, a12, ... , a1n, a21, ... , a2n, ... , ann, b11, b12, ... , b1n, b21, ... , b2n, ... , bnn.
    Die einzelnen Elemente der Matrizen sind vom Typ INTEGER.

    Ausgabedaten:
    Bei korrekten Eingabedaten geben Sie die Elemente der Ergebnismatrix zeilenweise aus, wobei Sie zwei Elemente jeweils durch ein Leerzeichen trennen.
    Geben Sie nach jeder Zeile der Matrix einen Zeilenvorschub aus.
    Fehlerbehandlung:
    Sämtliche Eingabedatensätze sind immer vollständig einzulesen. Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.
    Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

    Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen (z.B. Dimension>7), so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.


    lg christophe :)

  • Yepp, der Eprog Teil is deiner... modulo dem _genauen_ Ablauf (wie zuerst Dimension einlesen), Fehlerbehandlung u.Ä. Vor dem Einlesen musst du noch überprüfen, ob die Dimension passt; vor den Berechnungen musst du auf alle Fälle noch überprüfen ob ein inputError aufgetreten ist ( "if (inputError)" ist da dein Freund ;) ) und die entsprechende Fehlerbehandlung.
    Das Ausgeben machst du am besten analog zum Einlesen, also zwei for-Schleifen ineinander, nur im inneren Teil kommt EprogIO.print(matrix[i][k]); und wenn es nicht das letzte Element der Zeile war noch EprogIO.print(" "); In der äußeren Schleife kommt nach der inneren for-Schleife noch EprogIO.print("\n"); Das Ganze klingt jetzt vielleicht verwirrend, aber mit der genauen Formatierung kannst du dich ja "spielen"

    Viel Glück!

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • hallo!!!...

    ich hab das jetzt einmal so gemacht......stimmt das.....was ist falsch und was gehört noch dazu???....muss den schei** bis mittwoch haben und hab noch immer keinen plan :(

    import eprog.*;

    public class Matmult extends EprogIO{


    public static void main(String []args){


    int n = 0;
    int [][] matrix = new int [n][n];
    boolean Dimensionsfehler = false;


    for (int i=0; i < n; i++){
    for (int k=0; k < n; k++){


    try{
    n = readInt();
    matrix[i][k]=EprogIO.readInt();
    }


    catch(EprogException e){println("?");

    }

    }
    }


    println("\n");


    if((n < 0)||(n > 8)) Dimensionsfehler = true;
    if(Dimensionsfehler == true) println("Falsche Eingabe");


    println("");

    println("");


    }
    }


    liebe grüße christophe

  • wie siehts aus, war dein Beispiel richtig? Konntest du es noch lösen?

    also mir fiele hier zb auf, dass 2 If-Abfragen am Ende des Codes nicht unbedingt notwendig wären. Sondern eine reicht und den rest des Programms in der else-Bedinung einfügen.

    Hab btw. das selbe Beispiel zu lösen. Mein Code steht, aber ich häng noch bei der Bedingung, dass immer die gesamte Eingabe eingelesen werden soll. Bei meiner try-Anweisung bricht er aber sofort nach einer falschen Eingabe ab?! Richtig so? oder kann man da mit der Spez konform gehen?

    Gruß
    Curdt

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!