000
25.06.2019, 16:48 Uhr
coder09
|
Hi,
ich versuche meine Hausaufgaben zu zu machen. Habe schon angefangen und fast die Hälfte selbstständig hinbekommen. Allerdings komme ich bei den Konstruktiven mit Initialisierungslisten nicht weiter.
Aufgabe als .pdf: https://www.docdroid.net/4HQT21V/in-modul2-f2019.pdf#page=2
Meine Lösung bis einschließlich Aufgabe 1a):
C++: |
#include <iostream> #include <cmath>
using namespace std;
class BYTE { protected: char *Low; bool valid; private: void validate(){ if(this->Low == NULL){ this->valid = false; return; } if(strlen(this->Low) != 2){ this->valid = false; return; } for(int i=0; i<2; i++){ if(!((this->Low[i] >= 'A' && this->Low[i] <= 'F') || (this->Low[i] >= '0' && this->Low[i] <= '9'))){ this->valid = false; return; } } this->valid = true; } void dec2hex(int value){ this->Low = new char[2]; int rest = value; for(int i=1; i>=0; i--){ rest = value%16; value = value - rest; if(rest < 10 && rest > 0){ this->Low[i] = '0' + rest; } else if(rest >= 10){ this->Low[i] = 'A' + rest - 10; } else { this->Low[i] = '0'; } } } public: BYTE(char *Wert){ this->Low = Wert; this->validate(); } BYTE(int Wert){ if(Wert >=0 && Wert <= 255){ this->dec2hex(Wert); this->valid = true; } else { this->valid = false; } } BYTE(BYTE & BYTE2){ this->Low = new char[2]; strcpy(this->Low, BYTE2.getLow()); this->valid = BYTE2.getValid(); } char * getLow(){ return this->Low; } bool getValid(){ return this->valid; } int getValue(){ int summe = 0; if(this->valid){ for(int i=0, p=strlen(this->Low)-1; i<2; i++, p--){ if(this->Low[i] >= 'A' && this->Low[i] <= 'F'){ summe += pow(16, p) * (this->Low[i] - 'A' + 10); } else { summe += pow(16, p) * (this->Low[i] - '0'); } } return summe; } return -1; } };
class EVLE { private: EVLE * Next; long Check; public: EVLE(EVLE * N, long C){ } EVLE(EVLE & EVLE2){ } EVLE * getNext(){ return this->Next; } long getCheck(){ return this->Check; } void setNext(EVLE * n){ this->Next = n; } void setCheck(long C){ this->Check = C; } };
class WORT : public BYTE, public EVLE { private: BYTE * high; long Value; public: WORT(char * ZK , EVLE * N, long C):BYTE(0), EVLE(N, C) { //hier komme ich nicht weiter } WORT(long LWert, EVLE *N, long C):BYTE(0), EVLE(N, C){ //und hier } WORT(WORT & WORT2){ } int getValue(){ return this->Value; } char * getWert(){ return ""; } bool operator==(WORT const& WORT1, WORT const& WORT2){ } ~WORT(){ } };
int main(int argc, char *argv[]) {
}
|
Ich verstehe das so: Bei Aufgabe 1a) bekommt man einen char* übergeben. Das übergebene char* muss eine Länge von 4 haben. Dann soll das char in der Mitte getrennt werden. Die 2 höheren Elemente sollen in dem Attribut 'low' aus der klasse BYTE abgespeichert werden und die 2 niedrigeren Elemente in dem Attribut 'high' der Klasse WORT. Nun ist meine Frage wie ich das aufteilen soll, wenn Initialisierungslisten gefordert sind?
Hoffe jemand versteht was ich meine und kann mir helfen.
Lg |