W
Die Nummern im großen Feld beginnen bei 0 und die im Sub-Feld bei 1 - ein bisschen krank, aber das muss man beachten. Ich unterstelle mal, dass der Abstand zweier benachbarter Subfelder ==1 ist.
benutze 'Vector.h' und dann ..
#include "Vektor.h" // http://www.c-plusplus.net/forum/viewtopic-var-p-is-1108802.html#1108802
#include <iostream>
struct FeldNummer
{
int m_feldNr;
int m_subFeldNr;
friend std::istream& operator>>( std::istream& in, FeldNummer& nr )
{
char komma;
if( in >> nr.m_feldNr >> komma >> nr.m_subFeldNr && komma != ',' )
in.setstate( std::ios_base::failbit );
return in;
}
};
template< int XSize, int YSize, int Base >
basic_vector< double > makePos( int nr )
{
const int idx = nr - Base;
return basic_vector< double >( idx % XSize, idx / YSize );
}
basic_vector< double > makePos( const FeldNummer& nr )
{
return makePos< 10, 10, 0 >( nr.m_feldNr ) * 5 + makePos< 5, 5, 1 >( nr.m_subFeldNr );
}
int main()
{
using namespace std;
cout << "gegen sie zwei Felder an zB.: 51,4 68,11 " << endl;
for( FeldNummer von, bis; cin >> von >> bis; )
{
cout << "Der Abstand betraegt: " << abs( makePos( bis ) - makePos( von ) ) << endl;
}
return 0;
}
Man erhält z.B.:
gegen sie zwei Felder an zB.: 51,4 68,11
54,4 76,13
Der Abstand betraegt: 15
x
Press any key to continue . . .