Zum Inhalt springen

eryx

Mitglieder
  • Gesamte Inhalte

    20
  • Benutzer seit

  • Letzter Besuch

  1. Hallo klotzkopp danke für deine antwort welchen parameter meinst du ? nokia_charger.chargeAccu(nokia); hier statt dem objekt also ne referenz ? mh dann brauch ich den copy konstruktor auch nicht mehr oda bin ich da auf dem holzweg?
  2. Hallo erstmal So ich erklär ma kurz die aufgabenstellung dann schilder ich mein Problemchen Alsoooo ^^ Habe 2 Klassen: Handy und Charger mit grundlegenden metoden. der dekonstruktor soll am ende den zustand des handy objektes ausgeben, da liegt auch mein problem. Denn dieser wird 2 mal hintereinander aufgerufen oO Also 1 mal wenn ich die methode nokia_charger.chargeAccu(nokia); und wenn dass eigentliche handy objekt zerstört wird. Kann ich den 1. aufruf irgendwie unterbinden bzw in den dekonstruktor ne if condition reinhaun damit der den status nur ausgibt wenn er dass 2. ma aufgerufen wird? naja okay ich post ma mein code handy.h #include <time.h> using namespace std; void wait(double seconds); class handy{ private: string name; int txPower; // in mW float accuCharge; // in mAh int accuCapacity; // in mAh int accuVoltage; //{read only} time_t ConnectionStart,ConnectionEnd; int ConnectionDuration, timeTalked; bool NetStatus; public: handy(string,int,int); handy(const handy&); ~handy(); void moreTxPower(); void lessTxPower(); void connect(); void disconnect(); float accuState(); // Zugriffsmethoden int getAccuCapacity(); float getAccuCharge(); int getAccuVoltage(); int getTxPower(); }; charger.h #include <string> #include "handy.h" void wait(double seconds); using namespace std; class charger{ private: string name; float accumulatedChargingTime; int chargingCurrent; // Ladestrom public: charger(string,int); charger(const charger&); ~charger(); void chargeAccu(handy); void powerOn(); void powerOff(); //Zufriffsmethode }; handy.cpp #include "handy.h" #include "charger.h" handy::handy(string aName, int aTxPower, int aAccuCapacity){ timeTalked=0; accuVoltage =8; name = aName; txPower= aTxPower; accuCapacity = aAccuCapacity; accuCharge = aAccuCapacity; cout << "ON\n"; } handy::handy(const handy &handyToCopy){ // Copy constructor cout << "Copy\n"; accuCapacity = handyToCopy.accuCapacity; accuVoltage = handyToCopy.accuVoltage; accuCharge = handyToCopy.accuCharge; txPower = handyToCopy.txPower; } handy::~handy(){ cout << "OFF\n"; cout << "\n\n\n\n"; cout << "Daten für Handy: " << name << endl; cout << "Dauer aller Gespräche: " << timeTalked*15 << " Minuten" << endl; cout << "Ladestatus: " << accuState() << " %" << " (" << accuCharge << " mA)" << endl; } void handy::moreTxPower(){ if (txPower >=100 && txPower <2000) { txPower += 100; cout << txPower << endl; } else { cout << "Unzulässige Operation\n"; } } void handy::lessTxPower(){ if (txPower >=100 && txPower <2000) { txPower -= 100; cout << txPower << endl; } else { cout << "Unzulässige Operation\n"; } } void handy::connect(){ NetStatus = true; cout << "CONNECTED\n"; ConnectionStart = time(NULL); cout << "Gesprächszähler gestartet...\n"; } void handy::disconnect(){ NetStatus = false; cout << "DISCONNECTED\n"; ConnectionEnd = time(NULL); ConnectionDuration = ConnectionEnd - ConnectionStart; cout << "Gesprächsdauer: " << ConnectionDuration*15 << " Minuten" << endl; accuCharge = accuCharge - ((txPower/accuVoltage)*ConnectionDuration); timeTalked +=ConnectionDuration; } float handy::accuState(){ float state; int x = accuCapacity/100; state = (accuCharge/x) + 0,05; return state; } int handy::getAccuCapacity(){ return accuCapacity; } float handy::getAccuCharge(){ return accuCharge; } int handy::getAccuVoltage(){ return accuVoltage; } int handy::getTxPower(){ return txPower; } charger.cpp #include "charger.h" #include "handy.h" void wait(double seconds); charger::charger(string aName, int newChargingCurrent){ name = aName; chargingCurrent=newChargingCurrent; } charger::charger(const charger &chargerToCopy){ } charger::~charger(){ } void charger::chargeAccu(handy aNew){ int c; c = aNew.getAccuCapacity() - aNew.getAccuCharge(); accumulatedChargingTime=(aNew.getAccuVoltage()*c)/aNew.getTxPower(); cout << "Ladedauer: " << accumulatedChargingTime*15 << " Minuten\n"; wait(accumulatedChargingTime); } void charger::powerOn(){ cout << "Beginne mit Ladevorgang...\n"; } void charger::powerOff(){ cout << "Ladevorgang abgeschlossen!\n"; } main.cpp #include "handy.h" #include "charger.h" #include <string> using namespace std; void wait(double seconds); int main(){ setlocale(LC_ALL,"German_Germany.1252"); // Objekte erzeugen handy nokia("nokia3210",900, 1250); charger nokia_charger("nokia3210",125); // Test Programmablauf nokia.lessTxPower(); nokia.moreTxPower(); nokia.moreTxPower(); nokia.connect(); wait(4); nokia.disconnect(); // Ladevorgang nokia_charger.powerOn(); nokia_charger.chargeAccu(nokia); nokia_charger.powerOff(); } Anmerkung: void wait(double seconds); is ne .lib die einfach ne sleep funktion beinhaltet also wait(4) sind dann 4 sec. so falls jemand soviel zeit hat das ma zu lesen, und eventuell verbesserungsvorschläge, lösungsansätze für mein prob hat wäre dass sehr nett greetz eryx
  3. eryx

    Dezimal zu dual

    ah okay ! dass macht das ja um einiges leichter... werd ich auchma ausprobieren am wochenende also nochma dickes danke an alle die geantwortet haben. Echt ein gutes forum, geht alles sehr fix,:uli weiter so ! lg eryx
  4. eryx

    Dezimal zu dual

    was macht den diese for-schleife genau? for (int i = (sizeof(value)<<3); i > 0; i = i>>1) soweit ich das verstehe is die shift variabale oder? also die sagt wieoft geshiftet wird.
  5. eryx

    Dezimal zu dual

    mh mir is das zu hoch ^^ noch nie was von (sizeof(value)<<(1<<3)) sizeof usw gehört was macht der befehl? << 3 heißt 3 shifts nach links?
  6. eryx

    Dezimal zu dual

    aaaaaaaaaaaaah!!!!!!!!!!!!!! ich haaaaaabs !!!! :bimei hab die forschleife geändert (den tipp mit dem höchsten eben erst geraftt ^^ habs vorher auf die terminierung bezogen ) for (i=32;i>=0;i--) jetzt gibts keine komische zeichen mehr und alles läuft danke an alle für eure mühe ! hätte nur noch ne frage ob ich mit der array methode die unbenutzen nullen wegbekomme oda ob ich das so hinnehmen muss - da ich keine bitoperatoren und shifts benutze. lg eryx
  7. eryx

    Dezimal zu dual

    ja ich hab hald ma alles durchprobiert... wenn ich binarray[32] = '\0' hab steht das selbe da und ich habs jetzt direkt vor cout gesetzt binarray[32] = '0'; cout << binarray; :(
  8. eryx

    Dezimal zu dual

    sooo also ich hab jetzt die reihenfolge umgekehrt in dem ich einfach i auf 33 gesetz hab und mit i-- runterzähle nun hab ich aber wieder ein problem mit der "terminierung" denn wenn ich als dezi = 6 eingebe schreibt er "000..110|||| " also nach der letzten 0 nur müll. wie muss das richtig laufen mit der terminierung, wenn ich das feld rumgedreht ausgebe bzw einlese? #include <iostream> #include <conio.h> using namespace std; int main() { int i,n,dezi; char binarray[33]; binarray[33] = '\0'; cout << " Dezimal in Binaer \n\n"; cout << " Bitte geben sie die umzurechnende Dezimalzahl ein \n\n\n"; cin >> dezi; cout << "\n"; for (i=33;i>=0;i--) { n= dezi%2; dezi=dezi/2; if (n==0) binarray[i]='0'; if (n==1) binarray[i]='1'; } cout << binarray; getch(); return 0; }
  9. eryx

    Dezimal zu dual

    @ tdm wie sähe denn ein ansatz für bitoperatoren aus? ich weiß ja dass wenn ich cin >> dezi; eingebe die zahl dual gespeichert wird... nur wie nutz ich das im zusammenhang mit bitoperatoren?
  10. eryx

    Dezimal zu dual

    sauber nu machts was ich will (vorerst ^^) so dann mach ich mich ma an die umgekehrte ausgabe, da muss ich mit shifts arbeiten oda? schonma vielen dank, hast mich schonma weitergebracht
  11. eryx

    Dezimal zu dual

    ja wenn ich 3 z.b eingebe kommen die 2 smileys ^^ mh okay wie merz ich diesen fehler aus? muss ja irgendwie den wert da rauslöschen... nur wie? hab mit arrays noch fast keine erfahrung zur terminierung, das hab ich verstanden aber wie setz ich das um?
  12. eryx

    Dezimal zu dual

    okay dann änder ich dass ma in char um, was meinst du mit terminierung? sorry bin im 1. semester, und noch net so viel ahnung danke aber schonma für die fixe antwort !!! ps habs in char binarray[i]; geändert und jetzt kommt bei der ausgabe zwei ":) :)" lol ^^
  13. eryx

    Dezimal zu dual

    Hallo leute! bin grade dabei ein simples programm zu schreiben, dass dezimal einliest und dual ausliest. ich möchte dabei nach folgendem prinzip vorgehen: for-schleife mit ner laufvariablen i n=dezimalzahl%2 dezimazahl/2 if abfrage die werte werden in ein feld geschrieben und dann umgekehrt ausgegeben, da ich sie ja "falschrum" reinschreibe. das es einfacher geht zb mit bitset oda so weiß ich, darf ich aber nicht benutzen ich hab ma angefangen aber es kommt ein fehler bei der ausgabe vom feld: #include <iostream> #include <conio.h> using namespace std; int main() { int i,n,dezi; int binarray[33]; cout << " Dezimal in Binaer \n\n"; cout << " Bitte geben sie die umzurechnende Dezimalzahl ein \n\n\n"; cin >> dezi; cout << "\n"; for (i=0;i<33;i++) { n= dezi%2; dezi=dezi/2; if (n==0) binarray[i]=0; if (n==1) binarray[i]=1; } cout << binarray; getch(); return 0; } über nette antworten / hilfe würd ich mich freun danke schonmal
  14. aufen ersten blick hab ich aber noch ne frage min = werte[i] < min ? werte[i] : min; was bedeutet das "?" ? ja meine grundgedanke war ja dass werte der aktuelle wert is den ich beim ersten cin eingebe und der dann wieder überschrieben wird und ich dannach wieder vergleiche... aber dem is wohl nicht so... ^^ mh okay werd ich mir heud abend ma in ruhe anschauen, hab jetzt en termin... schonma vielen dank für die mühe.... !
  15. ja möglichkeit b hab ich auch schon dran gedacht... aber da scheiterts an den Grundlagen ^^ weiß net wie ich das korrekt schreibe.... min = werte[1]; if (min > werte[i]) { werte[i] = max; } Funktioniert schonma irgendwie net... ^^

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...