Zum Inhalt springen

eryx

Mitglieder
  • Gesamte Inhalte

    20
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von eryx

  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... ^^
  16. Huhu Leute so ich hab ma wieder ein Problemchen... mein Prof möchte ein Programm haben, dass: a) eine Zahlenfolge liest (Anzahl soll vorher abgefragt werden) von der Zahlenfolge den Mittelwert bildet c) das minimum der eingegebenen zahlen ausgibt so bei c) hänge ich fest... irgendwie liest der den Wert den ich ins array tippe nicht bzw ich hab noch nicht viel Erfahrung mit array's vielleicht hab ich ja sonst noch en groben Fehler gemacht oda so, keine ahnung... komme jedenfalls nicht weiter, wäre nett wenn ma einer drüber schaut. Bitte aber triviale Lösungsansätze/Vorschläge... hab bissel gegooglet und was von "pointer" und "vector" gelesen aber sowas haben wir noch nicht gemacht lg eryx (1 Semester Informatik) #include <iostream> #include <conio.h> using namespace std; double mittelwert(double x[],int anzahl) // Array x erstellen { int i; //feldgröße double m = 0.0; for(i=0;i<anzahl;i++) //Feldgröße erhöhen bis an Eingabe angepasst { m=m+x[i]; } // Summe bilden m=m/anzahl; // Mittelwert berechnen return m; } int main(void) { double werte[1000]; double min =0; int anzahl,i; double max = 0; cout<<endl<<"Anzahl der einzulesenden Werte: "; // Anzahl der werte cin>>anzahl; for(i=0;i<anzahl;i++) { cout<<endl<<"Wert Nr."<<(i+1)<<": "; cin>>werte[i]; if (min > werte[i]) { werte[i] = max; } } cout<<"Der Mittelwert der eingegeben Zahlen ist: "<<mittelwert(werte,anzahl); cout<<"\n\n"<<"Das Minimum lautet: "<< max; getch(); return 0;
  17. aaaaaaah sauber jetzt gehts :upps juhu ^^ vielen danke an alle :bimei bis zur nächsten hausaufagabe ^^
  18. so hab das ganze programm nochmal neu geschrieben... sind aber noch einige fehler drinne... er gibt jetzt primzahlen aus, jedoch gibt er jede zahl die er findet die vorherigen auch mit an oO man man man ganz schön schwierig... #include <iostream> #include <conio.h> using namespace std; int main() { int MinPrimzahl; int MaxPrimzahl; int Primzahl, Divisor; bool istEinePrimzahl; cout << " Primzahlenausgabe\n" << " \n"; //Eingabeaufforderung cout << " Bitte geben sie den minimalen und maximalen Bereich der Ausgabe an\n" << " \n"; cout << " Minimum: "; cin >> MinPrimzahl; cout << " \n"; cout << " Maximum: "; cin >> MaxPrimzahl; cout << " \n"; cout << " Primzahlen von " << MinPrimzahl << " bis " << MaxPrimzahl << ":\n\n\n"; while (MinPrimzahl <= MaxPrimzahl) { for (Primzahl=2; Primzahl<=MinPrimzahl; Primzahl++) { istEinePrimzahl = true; // Pruefe, ob Primzahl wirklich eine Primzahl ist for (Divisor=2; istEinePrimzahl && Divisor<Primzahl; Divisor++) { // Ist das restlos teilbar? if (0==Primzahl % Divisor) { // Zahl ist teilbar, ist also keine Primzahl! istEinePrimzahl = false; } } // Pruefung ist beendet. // Wenn es eine Primzahl ist, ausgeben! if (istEinePrimzahl) { cout << " ," << Primzahl; } } MinPrimzahl++; } cout << endl ; getch(); }
  19. hehe okay werd ich mich jetzt ma dranmachen... es lebe die zeitumstellung, ei^ne stunde mehr ^^ ich studiere seit oktober das erste semester info und hab vorher noch nie programmiert ^^ habt erbarmen
  20. Hallo zusammen, also ich hab als hausaufgabe bekommen ein programm zuschreiben das einen min und max wert abfragt und für diesen bereich alle primzahlen angibt. Es soll ein einfaches übungsprogramm sein deshalb soll auf die Sieb-methode verzichtet werden. so mein programm funktioniert, bis auf die kleinigkeit, dass es nach der schleife wieder alle zuvor bekannten primzahlen mit ausgibt.... kann mir einer sagen wo mein fehler liegt? hocke seit 3 stunden hier dran und bin am verzweifeln... danke schonmal! #include <iostream> #include <conio.h> using namespace std; int main() { int i =2; // Deklaration int eingabe_min; int eingabe_max; int prim; bool teiler = false; cout << " Primzahlenausgabe\n" << " \n"; //Eingabeaufforderung cout << " Bitte geben sie den minimalen und maximalen Bereich der Ausgabe an\n" << " \n"; cout << " Minimum: "; cin >> eingabe_min; cout << " \n"; cout << " Maximum: "; cin >> eingabe_max; cout << " \n"; cout << " Primzahlen von " << eingabe_min << " bis " << eingabe_max << ":\n\n\n"; while (eingabe_min <= eingabe_max) // Äußere Schleife { while (eingabe_min%2 > 0) // Überprüfung ob rest > 0 { for(int i=x; i<=eingabe_min; i++) { if (eingabe_min%i == 0) // Auf Prim überprüfen { teiler = true; } if (teiler == true) { cout << i << endl << "\n"; // Ausgabe } teiler= false; } eingabe_min++; } eingabe_min++; } getch(); return 0; }

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...