Felder; Ausgabe von Werten



  • Hallo liebe Community,

    ich bin neu hier und hoffe alles ins richtige Forum geschrieben zu haben.

    Ich versuche immoment ein Viereck zu drehen und dann die Koordinaten des Vierecks vor und nach der Rotation auszugeben.

    Das Problem liegt an der Ausgabe der Werte.

    Mein bisheriger Versuch sieht so aus:

    #include<iostream>
    using namespace std;
    #include <cmath>
    #include <bitset>

    const int feldLeng1 = 2; //1. Felddimension (Zeilen,x)
    const int feldLeng2 = 4; //2. Felddimension (Spalten,y)
    const int feldLeng3 = 2;
    const int feldLeng4 = 2;
    const int feldLeng5 = 2;
    const int feldLeng6 = 4;
    double ergebnis[feldLeng5][feldLeng6];
    double alpha;
    double viereck[feldLeng1][feldLeng2]={{1.25,-1.25,-1.25,1.25},{1.25,1.25,-1.25,-1.25}}; //2D Feld mit 2x4
    double Rotama[feldLeng3][feldLeng4]={{cos(alpha),-sin(alpha)},{sin(alpha),cos(alpha)}}; //Rotationsmatrix

    void ausgabe (double x[2][4])

    {
    for (int i=0;i<2;i++) //hier hackts
    {(int j=0;j<4;j++)
    {
    double viereck[i][j];
    }
    }

    int main ()
    {

    cout<<"Geben Sie den Drehwinkel alpha ein.";
    cin>>alpha;

    for (int i=0;i<2;i++)
    {
    for(int j=0;j<4;j++)
    {
    for(int k=0;k<2;k++)
    {
    ergebnis[i][j]+=Rotama[i][k]*viereck[k][j];

    ausgabe (double x) //klappt das so dass er mir die dann ausgibt?
    }
    }
    }

    return 0;
    }

    Vielen Dank schonmal im Vorraus



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich kenn mich zwar mit dem mathematischen Teil des Programmes nicht aus, aber ich hab mir mal die Muehe gemacht, die groben Syntaxfehler auszubessern und das Programm zum laufen zu bringen. Die fehlerhaften Code-Stellen habe ich mit Kommentaren versehen:

    #include <iostream>
    #include <cmath>
    #include <bitset>
    
    using namespace std;	// diese Anweisung am besten erst nach den Headereinbindungen verwenden
    
    // du definierst die Groesse der Felder per Konstanten, benutzt sie dann aber nachher kaum...
    // (z.B. nicht in Schleifen etc.)
    const int feldLeng1 = 2;
    const int feldLeng2 = 4;
    const int feldLeng3 = 2;
    const int feldLeng4 = 2;
    const int feldLeng5 = 2;
    const int feldLeng6 = 4;
    
    double ergebnis[feldLeng5][feldLeng6];
    double alpha;
    double viereck[feldLeng1][feldLeng2]={{1.25,-1.25,-1.25,1.25},{1.25,1.25,-1.25,-1.25}};
    
    // Initialisierung des Arrays »Rotama« mit nicht-initialisierter Variable »alpha«
    // Rotama erst in »main« definieren - Globale Variablen sind sowieso grundsaetzlich eine
    // schlechte Idee
    // »double Rotama[feldLeng3][feldLeng4]={{cos(alpha),-sin(alpha)},{sin(alpha),cos(alpha)}};«
    
    void ausgabe (double x[2][4])		// statt »double x[2][4]«
    {
    	for (int i=0;i<2;i++)
    	{
    		for (int j=0;j<4;j++)		// »for« vergessen: »(int j=0;j<4;j++)«
    		{
    			cout << x[i][j]			// statt »double viereck[i][j];« - c_ou_t mit d_ou_ble verwechselt? - »viereck« statt parameter benutzt
    				<< " ";			// ein Leerzeichen der Uebersichtlichkeit halber
    		}
    	}
    }			// schliessende Klammer vergessen
    
    int main ()
    {
    	cout<<"Geben Sie den Drehwinkel alpha ein.";
    	cin>>alpha;
    
    	double Rotama[feldLeng3][feldLeng4]={{cos(alpha),-sin(alpha)},{sin(alpha),cos(alpha)}};		// definierung von »Rotama«
    
    	for (int i=0;i<2;i++)
    	{
    		for(int j=0;j<4;j++)
    		{
    			for(int k=0;k<2;k++)
    			{
    				ergebnis[i][j]+=Rotama[i][k]*viereck[k][j];
    
    				// »ausgabe (double x)« - Wolltest du »ergebnis« ausgeben? Und das 16 mal?
    			}
    		}
    	}
    
    	ausgabe(ergebnis);		// ich denke so war das beabsichtigt
    
    	cin>>alpha;			// optional: automatisches schliessen des Konsolenfensters verhindern
    	return 0;			// optional: 0 wird bei fehlen der »return« Anweisung in »main« immer zurueckgegeben
    }
    


  • Vielen Vielen Dank hat mir sehr geholfen 🙂


Anmelden zum Antworten