L'Addition et la soustraction de nombres complexes à l'aide de la classe en C++
J'ai ici un code qui est censé demander à l'utilisateur de deux ensembles de réel et de l'imaginaire des nombres.
#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;
}
Cependant, lorsque j'ai compilé le programme, beaucoup d'erreurs sont affichés (std::basic_ostream) dont je n'ai même pas obtenir.
Un autre problème que je vais avoir est la fonction nulle::Complexe d'impression. Il devrait être une condition à l'intérieur de lui-même cout. Pas de if-else. Mais je n'ai aucune idée de quoi faire.
Le programme doit s'exécuter comme ceci:
D'entrée de partie réelle de l'opérande: 5
D'entrée de partie imaginaire pour un opérande: 2 (le i de l'imaginaire ne doit pas être écrit)
D'entrée de partie réelle de l'opérande deux: 8
D'entrée de partie imaginaire de l'opérande de deux: 1 (encore une fois, je ne devrais pas être entré)
/puis il affichera l'entrée(ed) les numéros de/
(5, 2i) //cette fois, avec un je
(8, 1i)
/alors les réponses/
La somme est 13+3i.
La différence est -3, 1i. //ou -3, je
S'il vous plaît aidez-moi! Je suis nouveau en C++, et ici, dans stackoverflow et votre aide serait très appréciée. Merci beaucoup!
- Est-ce que votre école de devoirs?
- Lire un peu plus à propos de la surcharge d'opérateur et vous devriez être capable d'écrire votre ajouter et soustraire des fonctions correctement.
- Oui, penartur. Je pense que j'ai fait ce que je peux, mais mes connaissances sont encore insuffisantes. J'ai besoin de conseils.
- Le compilateur que vous utilisez? g++ peut être assez cryptique. Peut-être essayer clang++? Si non, google erreurs individuelles. Mettre de l'esprit en elle 😀
- Bonjour, la tête en bas! J'utilise CodeBlocks. Merci!!!!
- Pourquoi réinventer la roue? stackoverflow.com/questions/42833241/...
Vous devez vous connecter pour publier un commentaire.
La ligne
cout << "La somme est" << résultat.ajouter << endl;
est incorrect, comme
add
est une méthode afinresult.add
sera un pointeur vers cette méthode, etcout
ne sais pas comment le gérer, ce qui rend le compilateur cracher.Modifier la ligne à
Vous devez faire la même chose pour la ligne
De style de codage, les deux méthodes sont overwrting existante d'un nombre complexe. Peut-être ayant une fonction comme celle-ci serait mieux
Cela vous permettra de la chaîne d'ajouts ensemble et aussi simplement ajouter un nombre complexe de l'existant nombre complexe.
En outre, vous pourriez faire les variables de classe
r
eti
privé. Cela nécessitera une alternative constructeur:Enfin, vous pouvez envisager de surcharge d'opérateur - je suis sûr que vous pouvez google pour trouver une tutoriel.
En main, après résultat de l'appel.ajouter, vous mettez la même fonction, dans le flux de cout quand elle ne retourne rien. Je pense que vous avez voulu écrire cout << "la somme est" << résultat.print();
Essayer de nouveau avec de légères corrections
Vous utilisez déjà le std:: espace de noms. Utilisez simplement le nombre complexe de la bibliothèque en ce que cette réponse suggère: Addition de nombres complexes à l'aide de classes
Je travaille aussi avec des Nombres Complexes, voici mon ComplexNumbers.h fichier:
et la .fichier cpp est-ce: