Array Problem
-
Huhu. Ich hab hier ne Pascal anwendung, die ich in C++ umschreiben muss. Jetzt hat der bei Pascal folgendes Array angelegt:
CONST Z : ARRAY [-5..5] OF real = (0.00001,0.0001,0.001,0.01,0.1, 1,10,100,1000,10000,100000);wie ihr seht, fängt das array im minus bereich an und beinhaltet nachkommestellen. diese werden später im programm abgefragt und das ergebnis mit den entsprechenden kommastellen multipliziert oder dividiert.
klar kann ich ein array von 0 - 11 anlegen, dadurch würde die ganze nachkommastellen bearbeitung viel komplizierter. ist wirklich total schräg aufgebaut alles. glaubt mir.
nun meine frage: kann ich im c++ auch so ein array anlegen, dass im - bereich beginnt?
-
Gar nicht und das ist auch gut so....
Schärge Pascal-Programme in schärge C++ Programme umschreiben zu wollen is schärg... :p
-
Schreib dir eine statische Funktion, die dir anhand eines Parameters die gewünschte Stelle zurückliefert.
-
Du könntest dir sowas in der Art basteln:
#include <exception> #include <iostream> using namespace std; template <typename T, int From, int To> class array { public: T& operator [](int i) { if (i < From || i > To) throw exception(); return buf[i + diff]; } T const& operator [](int i) const { if (i < From || i > To) throw exception(); return buf[i + diff]; } private: T buf[To - From]; enum { diff = -From }; }; int main() { array<float, -5, 5> arr; try { arr[-5] = 0.123; arr[0] = 1.45; arr[5] = 0.002; cout << arr[-5] << ' ' << arr[0] << ' ' << arr[5] << endl; } catch (...) { cerr << "out of bound" << endl; } return 0; }
-
ok
thx