Prob mit Klasse Trigometrie ...
-
//cfunction.h #ifndef CFunction #define CFunction class Trigonometrie { private: int Grad, x; double Bogenmass, cosinus, tangens; public: static const long double PI; double saveSing(int); //Achtung, macht nicht, was der Name zu vermuten lässt void readSing(); double saveCos(int); void readCos(); double saveTang(int); void readTang(); }; #endif //trigo.cpp #include "cfunction.h" #include <cmath> using namespace std; const long double Trigonometrie::PI = 3.1415926535897932384626433832795; double; Trigonometrie::saveSing(){ cout << "\nBerechnung von Sinus:\n" "Bitte geben sie den Winkel in Grad ein:\n"; cin >> Grad; Bogenmass = (PI * Grad) / 180; x = sin(Bogenmass); cout << "\n\n"; return x; } void Trigometrie::readSing(){ cout << "Bogenmass: " << Bogenmass/PI << "* PI\n" "Sinus: " << x << "\n\n"; } double Trigometrie::saveCos(){ cout << "\nCosinus-Berechnung:\n" "\nBitte geben sie den Winkel in Grad ein:\n"; cin >> Grad; Bogenmass = (PI * grad) / 180; x = cos(Bogenmass); cosinus = cos(grad); cout << "\n\n"; return x; } void Trigometrie::readCos(){ cout << "Bogenmass: " << Bogenmass/PI << "* PI\n" "Cosinus: " << cosinus << "\n\n"; } double Trigometrie::saveTang(){ cout << "\nTangens-Berechnung:\n" "Bitte geben sie den Winkel ein:\n"; cin >> Grad; bogenmass = (PI * grad) / 180; x = tan(Bogenmass); tangens = tan(Grad); cout << "\n\n"; return x; } void Trigometrie::readTang(){ cout << "Bogenmass: " << Bogenmass/PI << "* PI\n" "Tangens: " << tangens << "\n\n"; }
Du hast einen seltsamen hang zu leerzeichen/-zeilen...
Nimm entweder dein LieblingsC++buch zur hand und lies es nochmal oder hör auf während des Programmierens alzu exzessiv zu feiern bzw. zu trinken
das zurückgeben von werten hast du auch vergessen.
-
und wenn du in einer klasse einen prototyp double saveSing(int); hast, muss es auch später heissen:
double Trigometrie::saveSing(int Grad){ Bogenmass = (PI * Grad) / 180; x = sin(Bogenmass); return x;//du hast einen rückgabewert im prototyp definiert, dann musst du ihn auch zurückgeben }
in einer berechnungsfunktion hat kein cin/cout verloren, und erstrecht nicht, wenn der prototyp einen parameter/rückgabewert hat.
fang nochmal ganz von vorne an, die fehler rühren nicht vom alkohol sondern von einfachen unkenntnissen, aber daran kann man was ändern
-
otze schrieb:
Trigonometrie::Trigonometrie(){ // Konstruktor 3.1415926535897932384626433832795 }
lies bitte bitte nochmal ein buch über c++, das tut ja weh.
Trigonometrie::Trigonometrie(){ // Konstruktor PI=3.1415926535897932384626433832795 }
wie kannst du PI etwas zuweisen, wo es doch const ist?
lies bitte bitte nochmal ein buch über c++, das tut ja weh.
MaSTaH wollte dezent auf eine unklarheit und unkorrektheit deiner erklärung eingehen.
-
schon klar, hab mich bei meiner erklärung auf ne aussage gestützt, die hier im forum mal getätigt wurde, da ich selber kein so großer vertreter des const prinzips bin, hab ichs auch selber auch nie nachgeprüft. naja is geedited^^
btw, wo sollte man einen const wert initialisieren wenn nicht im ctor?^^
-
otze schrieb:
da ich selber kein so großer vertreter des const prinzips bin
au, das tut weh. auch noch nie referenzen als member benutzt? oder basisklassen initialisiert?
btw, wo sollte man einen const wert initialisieren wenn nicht im ctor?^^
also:
class Foo : public Bar { const int x_; int &y_; public: Foo (int &y) : Bar(42), x_(21), y_(y) {} };
die elementinitialisierungsliste des ctors.
-
otze schrieb:
btw, wo sollte man einen const wert initialisieren wenn nicht im ctor?^^
Natürlich im ctor. Allerdings in der Initialisierungsliste. Das sollte man btw. bei allen Sachen machen, da man sich eine unnötige Vorinitialisierung spart. Das sollte dir als Performance-Fan doch bekannt sein
.
Klasse::Klasse() : val1(10), val2(100) // <- das hier ist eine Initialisierungsliste { }
EDIT: zu spät
-
otze schrieb:
da ich selber kein so großer vertreter des const prinzips bin
Wuerde ich schleunigst aendern.
btw, wo sollte man einen const wert initialisieren wenn nicht im ctor?^^
initialisierungsliste?
-
was ist eigentlich so "toll" am const prinzip?
-
otze schrieb:
was ist eigentlich so "toll" am const prinzip?
sicherheit, einfachheit und lesbarkeit
sonst eigentlich nicht viel (von ab und zu etwas besserer performance mal abgesehen)
-
da scheint irgenwas noch nicht in ordnung zu sein
bekomme noch 9 Fehler ....//################################# // Function.h // Erstellungs Datum: 25.04.2004 // Autor: DaRkWolF //################################# #ifndef _Function_ #define _Function_ #include <cmath> using namespace std; // #################### KLASSE/TRIGOMETRIE ############################ class Trigonometrie { // Klasse für Cosinus, Sinus, Tangens private: int Grad, x; double Bogenmass, cosinus, tangens; // Membervariablen public: Trigonometrie(); // Konstruktor ~Trigonometrie(); // Destruktor static const long double PI; double saveData(int); // Memberfunktionen void readSing(); double saveData(int); void readCos(); double saveData(int); void readTang(); }; double Trigonometrie::saveData(int a){ cout << "\nBerechnung von Sinus:"; cout << "\nBitte geben sie den Winkel in Grad ein:"<< endl; cin >> Grad; Bogenmass = (PI * Grad) / 180; x = sin( Bogenmass ); return x; } void Trigonometrie::readSing(){ cout << "Bogenmass: " << Bogenmass/PI << "* PI" << endl; cout << "Sinus: " << x << endl; cout << "\n"; } double Trigonometrie::saveData(int a){ cout << "\nCosinus-Berechnung:" << endl; cout << "\nBitte geben sie den Winkel in Grad ein:" << endl; cin >> Grad; Bogenmass = (PI * Grad) / 180; x = cos( Bogenmass ); cosinus = cos(Grad); return x; } void Trigonometrie::readCos(){ cout << "Bogenmass: " << Bogenmass/PI << "* PI" << endl; cout << "Cosinus: " << cosinus << endl; cout << "\n"; } double Trigonometrie::saveData(int Grad){ cout << "\nTangens-Berechnung:" << endl; cout << "\nBitte geben sie den Winkel ein:" << endl; cin >> Grad; Bogenmass = (PI * Grad) / 180; x = tan( Bogenmass ); tangens = tan(Grad); return x; } void Trigonometrie::readTang(){ cout << "Bogenmass: " << Bogenmass/PI << "* PI" << endl; cout << "Tangens: " << tangens << endl; cout << "\n"; } #endif
cpp:
// test Klasse/Trigometrie // bspTrigp.cpp #include <iostream> #include <cmath> using namespace std; #include "CFunction.h" const long double Trigonometrie::PI = 3.1415926535897932384626433832795; int main(){ Trigonometrie Trigo; // Instanz "Trigo" der Funktion Trigometrie Trigo.saveSing(); Trigo.saveCos(); Trigo.saveTang(); cout <<"\nWert in Sinus :" << Trigo.readSing() << endl; cout <<"\nWert in Cosinus :" << Trigo.readCos() << endl; cout <<"\nWert in Tangens :" << Trigo.readTang() << endl; return 0; }
ich glaub ich dreh durch ...
THX für alle antworten!
ciao