Objekt Fernseher programmieren
-
Hallo zusammen.
Habe vor kurzem das Programmieren angefangen und muss nun einen Fernseher als Objekt programmieren...
Das sind meine Vorgaben die ich einhalten muss:a)Das Einstellen der Lautstärke (Methode setlautstaerke() ) und des Programms (Methode setprogramm() ) ist ausschließlich über diese Funktionen vorzunehmen. Das Einstellen soll zudem nur dann möglich sein, wenn der Fernseher eingeschaltet ist.
b)Greifen Sie nur über die Methoden auf die Attribute zu. Das gilt auch für die Ausgabe, also das Anzeigen von EIN/AUS, Lautstärke und Programm (Methode ausgabe() ).
c)Das Programm soll den Fernseher mindestens einmal einschalten (Methode getan() ). Die Lautstärke sowie das Programm sind einmal zu ändern. Abschließend ist der Fernseher über die Methode getan() wieder auszuschalten.
d)Die Methode init() initialisiert den Fernseher mit den Werten
ausgeschaltet
Lautstärke 10
Programm 1.e)Nach der Initialisierung und nach jeder Änderung soll das Programm den aktuellen Zustand auf dem Bildschirm ausgeben.
f)Methoden-Namen:
Lautstärke festellen: getlautstaerke()
Programm feststellen: getprogramm()und das ist mein Quelltext den ich bisher habe,aber der nicht so läuft wie er sollte...wäre nett wenn ihr ihn mal anschauen könntet und mir bei meinen Fehler behilflich seit....sitze jetzt schon ne ganze weile dran,ohne Erfolg!!!
#include<iostream.h>
class fernseherklasse{
private:int lautstaerke;
int programm;
int einaus;public:
int getlautstaerke();
int getprogramm();
void init();
void setlautstaerke (int aenderung);
void setprogramm (int aenderung);
void getan (int einaus );
void ausgabe();
};void fernseherklasse::init(){
einaus = 0;
lautstaerke = 10;
programm = 1;
}void fernseherklasse::getan(int einaus){
if (einaus == 0){
cout <<"Der Fernseher ist aus"<<endl;
cout <<endl;
}
else if (einaus != 0)
cout <<"Der Fernseher ist an"<<endl;
}void fernseherklasse::setlautstaerke(int aenderung) {
lautstaerke = lautstaerke + aenderung;if ((lautstaerke - aenderung)< 0){
lautstaerke =0;
}
else {
lautstaerke = lautstaerke - aenderung;
}
}void fernseherklasse::setprogramm(int aenderung) {
programm = programm + aenderung ;if ((programm - aenderung)< 0){
programm = 0;
}
else {
programm = programm - aenderung;
}
}fernseherklasse::getlautstaerke() {
return(lautstaerke);
}fernseherklasse::getprogramm() {
return (programm);
}void fernseherklasse::ausgabe(){
if ((einaus = 1) !=0) {
cout <<"Lautstaerke: "<<lautstaerke<<endl;
cout <<"Programm: "<<programm<<endl;
cout <<endl;
}
else if (einaus == NULL)
cout<<'\n';
}void main(){
//Zeiger definieren
fernseherklasse* fernseher;// Instanzen erzeugen
fernseher = new(fernseherklasse);// Objkete initialsisieren
fernseher->init();fernseher->getan(0);
fernseher->getan(1);
fernseher->getlautstaerke();
fernseher->getprogramm();
fernseher->ausgabe();fernseher->getan(1);
fernseher->setlautstaerke(-5);
fernseher->setprogramm(13);
fernseher->ausgabe();fernseher->getan(0);
delete(fernseher);
char c[50];
cin.getline(c,50);
}Hoffe das ihr mir helfen könnt...Danke euch jetzt schonmal

-
Pack deinen Code besser mal in cpp-Tags, und rück das ganze ordentlich ein.
Und mit "der nicht so läuft wie er sollte" kann niemand etwas anfangen.
-
void init();Konstruktor???
-
int einaus;bool???
lautstaerke = lautstaerke + aenderung;+= ???
lautstaerke = lautstaerke + aenderung; if ((lautstaerke - aenderung)< 0){ lautstaerke =0; } else { lautstaerke = lautstaerke - aenderung; }Das ergibt keinen Sinn!
if ((einaus = 1) !=0)Das ergibt keinen Sinn!
return(lautstaerke);Keine Klammern nötig!
#include<iostream.h>#include<iostream> using namespace std;else if (einaus != 0) cout <<"Der Fernseher ist an"<<endl;Nur else hier nötig!
-
Danke AGS`ler...

Konstruktor darf ich noch nicht anwenden.
Wie kann oder muss ich denn "setlautstaerke" ändern damit Lautstaerke nur ausgegeben wird wenn der Fernseher an ist?
Und für was ist bool??? Hatte ich bis jetzt nicht...
-
Ich hab mir den Code da oben jetzt nicht angeschaut, ist mir zu unübersichtlich ohne die Tags^^
Aber bool ist eine Variable, die nur 2 Werte besitzen kann: True oder False.
Also z.b. bool is_on = false...
Überprüfen geht dann entweder über if(is_on) [Ist an] oder if(!is_on) [ist nicht an]
-
Indem du den gesamten Abschnitt in ein
if(einaus){...}(btw, der Variablenname ist Unsinn - 'ein' reicht völlig) einschließt.PS: Übrigens sollte die Methode getan() auch den Member 'einaus' setzen

-
#if !defined(TELEVISION_H__INCLUDED) #define TELEVISION_H__INCLUDED #include <string> #include <algorithm> class Television { public: Television() {} ~Television() {} public: unsigned short get_volumn() const { return m_nVolumn; } std::string get_channel() const { return m_sChannel; } bool power_on() const { return m_bPower; } public: void set_volumn(const unsigned int& volumn) { m_nVolumn = std::max<unsigned int>(volumn, 100); show_information(std::cout); } void set_channel(const std::string& channel) { m_sChannel = channel; show_information(std::cout); } void switch_on(const bool on) { m_bPower = on; show_information(std::cout); } void init() { m_nVolumn = 10; m_sChannel = "CNN"; } public: void show_information(std::ostream& of_stream) const { of_stream << "Fehrnseher ist " << (m_bPower == true ? "an" : "aus") << "!" << std::endl << "Kanal: " << m_sChannel << std::endl << "Lautstaerke: " << m_nVolumn << std::endl; } private: unsigned short m_nVolumn; std::string m_sChannel; bool m_bPower; }; #endif // TELEVISION_H__INCLUDED
Wenn du Fragen dazu hast ... nur zu 
-
Danke für die Erklärung The-Kenny...
Gut CStoll verstanden hab ich das aber an der Umsetzung hapert es da ich noch am Anfang mitm Programmieren stehe...
-
Hallo (D)Evil.
Netter Quelltext aber viel versteh ich davon leider noch nicht
-
m_bPower = on;
Das ist doch bool

Ich denke eher, m_bPower = true; ist gemeint^^
-
nein? Somit kannst du den auch mit der Funktion ausschalten ... erst denken dann schreiben

@Gohst Rider: guck es dir in Ruhe an und Frag dann, wenn du noch Sachen nicht verstehst ...
-
(D)Evil schrieb:
nein? Somit kannst du den auch mit der Funktion ausschalten ... erst denken dann schreiben

@Gohst Rider: guck es dir in Ruhe an und Frag dann, wenn du noch Sachen nicht verstehst ...
Argh bin ich blöd *g*
Stimmt, ich sollte wirklich erst denken, dann schreiben^^
-
Was noch nicht berücksichtigt wurde:
Das Einstellen soll zudem nur dann möglich sein, wenn der Fernseher eingeschaltet ist.
-->
void set_volume(unsigned volume) { if (m_bPower) { m_nVolume = std::min<unsigned>(volume, 100); show_information(std::cout); } } // etc.@(D)Evil: man sollte nicht "max" schreiben wo man "min" meint

p.S.: ein "unsigned int" als const-Referenz übergeben ist ... IMO komplett sinnfrei.
-
hustbaer schrieb:
ein "unsigned int" als const-Referenz übergeben ist ... IMO komplett sinnfrei.
Wunderschön gesagt!

@Gohst Rider:
Btw, wo lernst du???
-
Ich lerne bei der Studiengemeinschat Darmstadt...Warum ist das wichtig AGS`ler?
-
Sagt mal wie greife ich von "::ausgabe()" auf "::gatan(einaus)" zu??? Ihrgendwie will ich nicht dahinter kommen... Glaub ich brauch mal nen Tag abstand....Sonst dreh ich noch durch

-
Das sind beides Memberfunktionen, daher gibts kein "::ausgabe" und auch kein "::gatan". Lern C++.
-
hustbaer schrieb:
Lern C++.
Oh, du kannst dich aber nett ausdrücken!
Gohst Rider schrieb:
Sagt mal wie greife ich von "::ausgabe()" auf "::gatan(einaus)" zu???
Du willst von einer Methode aus eine Get-Methode der selben klasse aufrufen => Mach mal bitte ein Tutorial!
Gohst Rider schrieb:
Ich lerne bei der Studiengemeinschat Darmstadt
Aha, ich lerne an der http://www.ags-erfurt.de/ ( Empfehle ich allen Technik interessierten Thüringern )!
Gohst Rider schrieb:
Warum ist das wichtig AGS`ler?
Das btw bedeutet, dass es mir eben nicht wichtig ist => es war nur Smalltalk!
-
@AGS'ler:
Wo ist bitte der Unterschied ob ich jetzt "Lern C++." oder "Mach mal bitte ein Tutorial!" schreibe?
-
::getan() ist eine globale Funktion, die ich in keinenm bisher geposteten Code finden kann. Das könnte das Problem dabei sein, dass du sie nicht aufrufen kannst.
Aber probier doch einfach mal die Methode (also nur "getan()") aufzurufen. Vielleicht ist das das, was du willst?