mehrdimensionale Felder an eine Funktion übergeben



  • Hi,

    wir sollen in der Übung zwei Matrizen mit Hilfe von drei Funktionen eingeben lassen, addieren und das Ergebniss auf dem Bildschirm anzeigen.

    Die Eingabe hat noch super geklappt, aber irgendwie bekomme ich die Addition, bzw. die Übergabe der beiden Matrizen an die Additionsfunktion, nicht hin. Ich habe bisher folgendes versucht:

    #include <iostream>
    
    using namespace std;
    
    float MyMatrixEingabe	( float MyMatrix[3][3] );
    //float MyMatrixAusgabe	( float MyMatrix[3][3] );
    void MyMatrixAddition( float MyMatrix1[][3], float MyMatrix2[][3]);
    
    int main()
    {
    	const int a=3 ,b=3;
    	float Matrix1[3][3];
    	float Matrix2[3][3];
    
    	cout << "Geben Sie die Werte der Matrix1 ein(zuerst die 3 Werte der erste Zeile, dann die  3 Werte der zweiten Zeile und dann die 3 Werte der dritten Zeile): "; cout << endl;
    	MyMatrixEingabe (Matrix1);
    	cout << endl;
    
    	cout << "Geben Sie die Werte der Matrix2 ein(zuerst die 3 Werte der erste Zeile, dann die  3 Werte der zweiten Zeile und dann die 3 Werte der dritten Zeile): "; cout << endl;
    	MyMatrixEingabe (Matrix2);
    
    	MyMatrixAddition(Matrix1, Matrix2);		//Hier tritt der Fehler wahrscheinlich auf
    
    	cout << endl;
    
    		for (int a = 0; a < 3; a++)
    	{
    		for (int b= 0; b < 3; b++)
    		{
    			cout << Matrix1[a][b] << "\t";
    		}
    		cout << endl;
    	}
    
    	system ("pause");
    	return 0;
    }
    
    float MyMatrixEingabe (float MyMatrix[3][3])
    {
    	const int a=3 ,b=3;
    	for (int a = 0; a < 3; a++)
    		{
    			for (int b= 0; b < 3; b++)
    			{  
    				cin >> MyMatrix[a][b];
    			}
    		cout << "\n";
    		}
    	return 0;
    }
    
    void MyMatrixAddtion (float MyMatrix1[][3], float MyMatrix2[][3])
    {
    
    	for (int a = 0; a < 3; a++)
    		{
    			for (int b= 0; b < 3; b++)
    			{
    				 MyMatrix1[a][b] += MyMatrix2[a][b];
    			}
    
    		}
    
    	return;
    }
    

    P.S.: Der Fehler schimpft sich

    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl MyMatrixAddition(float (* const)[3],float (* const)[3])" (?MyMatrixAddition@@YAXQAY02M0@Z)" in Funktion "_main".
    1>C:\uni\c++\Übungsblatt 7 - Abgabe 6.6.2011\Übung7a\Debug\Übung7a.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.



  • Als erstes sollte man sagen, dass du hier im falschen Forum gelandet bist. Kann das ein Moderator vielleicht verschieben? Danke 🙂

    Ich würde im übrigen empfehlen, dass du die Matrizen nicht nackt übergibst, sondern dafür eine Klasse schreibst. Dann fallen alle diese Scherereien weg. Aber natürlich sind diese Dinge im Studium irgendwann gefragt...

    Das Problem ist, dass du unten den Namen der Funktion falsch geschrieben hast: MyMatrixAddtion != MyMatrixAddition.



  • Klassen hatten wir noch nicht.

    Allerdings hattest du vollkommen Recht. Ich hab das i vergessen. Jetzt funktioniert es. Einfach unfassbar, wenn man bedenkt wie lang eich schon den Fehler suche 😃 Danke sehr!



  • Wenn du solche Fehler vermeiden willst, empfehle ich dir, auf solche unnötigen Vorwärts-Deklarationen zu verzichten. Dann passiert das nicht 🙂

    MfG


Anmelden zum Antworten