W
... bleibt noch 4)
#include <iostream>
#include <algorithm> // copy
#include <iterator> // ostream_iterator
class Koordinate
{
public:
Koordinate() : m_x(0), m_y(0) {}
Koordinate( double x, double y ) : m_x(x), m_y(y) {}
friend Koordinate operator+( const Koordinate& a, const Koordinate& b )
{
return Koordinate( a.m_x + b.m_x, a.m_y + b.m_y );
}
Koordinate ortho() const { return Koordinate( -m_y, m_x ); }
friend std::ostream& operator<<( std::ostream& out, const Koordinate& k )
{
return out << k.m_x << " " << k.m_y;
}
private:
double m_x, m_y;
};
class Linie
{
public:
Linie() : m_von(), m_bis() {}
Linie( const Koordinate& von, const Koordinate& richtung )
: m_von( von ), m_bis( von + richtung ) {}
Koordinate ende() const { return m_bis; }
friend std::ostream& operator<<( std::ostream& out, const Linie& l )
{
return out << "Linie von " << l.m_von << " nach " << l.m_bis;
}
private:
Koordinate m_von, m_bis;
};
int main()
{
using namespace std;
Linie linien[4]; // Array mit 4 Linien
Koordinate richtung( 4, 0 ); // eine Seite 4 lang, parallel zu X
linien[0] = Linie( Koordinate( -1, 2 ), richtung ); // beginne bei [-1;2]
for( int i=1; i<sizeof(linien)/sizeof(*linien); ++i )
{
richtung = richtung.ortho(); // drehe 90Grad nach links
linien[i] = Linie( linien[i-1].ende(), richtung );
}
copy( linien, linien + sizeof(linien)/sizeof(*linien), ostream_iterator< Linie >( cout << "Das Quadrat:\n", "\n" ) );
return 0;
}
Bem.: die geforderte for-Schleife versteckt sich im 'copy'
Gruß
Werner :xmas2: