[gelöst]C++ Komplexe Zahlen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
monkey
Beiträge: 182
Registriert: 29.06.2006 09:00:51
Wohnort: Buxtehude

[gelöst]C++ Komplexe Zahlen

Beitrag von monkey » 15.05.2009 23:55:25

Hallo zusammen bin gerade ein Programm für die UNI am schreiben das die grundlegenden Rechenarten mit komplexen Zahlen beherrschen soll. Das ganze muss in einer Klasse realisiert sein und die Operatoren + - * / << >> müssen überladen werden. Den Hauptteil habe ich nun fertig aber bei paar Sachen stehe ich ziemlich auf dem Schlauch ich hoffe ihr könnt mir helfen.

Main.cpp http://nopaste.debianforum.de/21385

Komplex.h http://nopaste.debianforum.de/21386

Code: Alles auswählen

In file included from Main.cpp:4:
Komplex2.h: In member function ‘komplex komplex::operator/=(komplex)’:
Komplex2.h:50: error: ‘((komplex*)this)->komplex::Realteil’ cannot be used as a function
Komplex2.h: In function ‘std::istream& operator>>(std::istream&, komplex&)’:
Komplex2.h:8: error: ‘double komplex::Realteil’ is private
Komplex2.h:105: error: within this context
Komplex2.h:9: error: ‘double komplex::Imaginaer’ is private
Komplex2.h:107: error: within this context
Komplex2.h:108: error: invalid initialization of reference of type ‘std::istream&’ from expression of type ‘komplex’
Zum einen beschwert sich der Compiler das ich eine private Variable versuche zu ändern, das sehe ich ja auch ein. Aber wie kann ich den vernünftig die Variablen einlesen. Die andere Fehlermeldung mit dem this Zeiger ist mit aber total suspekt. Danke im Voraus für die Hilfe.
Zuletzt geändert von monkey am 20.05.2009 22:22:46, insgesamt 1-mal geändert.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: C++ Komplexe Zahlen

Beitrag von peschmae » 16.05.2009 18:46:05

Zeile 50: Du hast da ein "Realteil()" stehen das eine Member-Variable und keine Funktion ist; ergo möchtest du stattdessen "Realteil" schreiben.

Für den Rest: Entweder du machst entsprechende set-Methoden:

Code: Alles auswählen

void setze_Real_teil(double d) {
  Realteil = d;
}
Oder du erstellst einen Konstruktor der zwei Doubles (Real- und Imaginärteil) als Argumente akzeptiert.

Zeile 108: da musst du ein "return var;" hinschreiben und nicht k zurückgeben.

Im Übrigen hat die C++ STL schon eine Unterstützung für komplexe Zahlen; man könnte auch einfach die verwenden... ;)
http://www.cplusplus.com/reference/std/complex/complex/

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Antworten