Addition und Subtraktion von komplexen zahlen mit Hilfe der Klasse in C++
Ich habe hier einen code, der angeblich auf bitten der Benutzer zwei Sätze von reellen und imaginären zahlen.
#include <iostream>
using namespace std;
class Complex {
public:
double r;
double i;
public:
Complex();
void add(Complex, Complex);
void subtract(Complex, Complex);
void print();
};
Complex::Complex() {
r = i = 0;
}
void Complex::add (Complex op1, Complex op2) {
r = op1.r+op2.r;
i = op1.i+op2.i;
}
void Complex::subtract (Complex op1, Complex op2) {
r = op1.r-op2.r;
i = op1.i-op2.i;
}
void Complex::print () {
cout << r << i;
}
int main () {
Complex operand1, operand2, result;
cout << "Input real part for operand one: " << endl;
cin >> operand1.r;
cout << "Input imaginary part for operand one: " << endl;
cin >> operand1.i;
cout << "Input real part for operand two: " << endl;
cin >> operand2.r;
cout << "Input imaginary part for operand two: " << endl;
cin >> operand2.i;
result.add(operand1, operand2);
cout << "The sum is " << result.add << endl;
result.subtract(operand1, operand2);
cout << "The difference is " << result.subtract << endl;
}
Allerdings, wenn ich das Programm kompiliert, viele Fehler angezeigt werden (std::basic_ostream), die ich gar nicht bekommen.
Weiteres Problem das ich habe ist in der Funktion void::Komplexe print. Es sollte ein Zustand, innen cout selbst. Keine if-else. Aber ich habe keine Ahnung, was zu tun ist.
Das Programm muss laufen wie diese:
Eingabe realer Teil für den Operanden ein: 5
Eingabe Imaginärteil für den Operanden: 2 (die ich für imaginäre sollte nicht geschrieben werden)
Eingabe Realteil für zwei Operanden: 8
Eingabe Imaginärteil für zwei Operanden: 1 (wieder, ich sollte nicht eingegeben werden)
/dann wird es drucken Sie den Eingang(ed) zahlen/
(5, 2i) //dieses mal mit einem i
(8, 1i)
/dann die Antworten/
Die Summe ist 13+3i.
Die Differenz ist -3, 1i. //oder -3, i
Bitte helfen Sie mir! Ich bin neu in C++ und hier bei stackoverflow und Ihre Hilfe wäre sehr geschätzt. Ich danke Ihnen sehr!
- Ist das Ihre Schule, die Hausaufgaben zu machen?
- Lesen Sie mehr über operator-überladung, und Sie sollten in der Lage sein, zu schreiben addieren und subtrahieren funktioniert einwandfrei.
- Ja, penartur. Ich denke, ich habe getan, was ich kann, aber mein wissen ist noch ausständig. Ich brauche Führung.
- Welche compiler verwenden Sie? g++ kann sehr kryptisch. Vielleicht versuchen clang++? Wenn nicht, google individuelle Fehler. Setzen Sie irgendein Geist in Sie 😀
- Hallo, auf den Kopf gestellt! Ich benutze CodeBlocks. Danke!!!
- Warum das Rad neu erfinden? stackoverflow.com/questions/42833241/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Linie
cout << "Die Summe ist" << Ergebnis.hinzufügen << endl;
ist falsch, da
add
ist eine Methode, die soresult.add
wird ein Zeiger auf die Methode, undcout
weiß nicht, wie es zu handhaben - das macht der compiler spuckt Sie aus.Ändern Sie die Zeile zu
Müssen Sie das gleiche zu tun für die Linie
Als zu coding style, die zwei Methoden sind overwrting eine vorhandene komplexe Zahl. Vielleicht mit einer Funktion wie diese wäre besser
Diese ermöglichen Ihnen die Kette Ergänzungen zusammen-und auch nur hinzufügen, eine komplexe Zahl zu der vorhandenen komplexe Zahl.
Zusätzlich können Sie die class-Variablen
r
undi
private. Dafür benötigen Sie eine alternative Konstruktor:Schließlich möchten Sie vielleicht zu prüfen, operator-überladen - ich bin sicher Sie können google, dass zu finden, ein vernünftiges tutorial.
In main nach Aufruf Ergebnis.hinzufügen, setzen Sie die gleiche Funktion in den stream cout, wenn es nichts zurückgibt. Ich denke, du meintest zu schreiben cout << "die Summe ist" << Ergebnis.print();
Versuchen Sie es erneut mit leichten Korrekturen
Du schon die std:: - namespace. Verwenden Sie einfach die komplexe Zahl-Bibliothek in es wie diese Antwort suggeriert: Neben der komplexen zahlen mit Klassen
Bin ich auch mit Komplexen Zahlen gearbeitet wird, hier ist meine ComplexNumbers.h-Datei:
und die .cpp-Datei ist diese: