Char mit Int verketten
-
Ich hätte mal eine grundlegende Frage:
Ist es möglich Character mit Ints zu verketten um ein Ergebnis zu berechnen?
int wert1,wert2,erg; char c[3]; c[0] = '+'; c[1] = '-'; ... cin ...wert1, wert2 erg = wert1 + c[0] + wert2; //hier!!Oder kann ich nur so:
erg = wert1 + wert2;das Ergebnis per Addition berechnen?
Danke.
Ist sehr grundlegend. Aber bin seit langem aus C++ heraus
-
Was hast du genau vor? Wozu brauchst du das?
Folgendes würde klappen, aber wozu soll das gut sein?
#include <iostream> int main() { int wert1; int wert2; int erg; char op[4]; op[0] = '+'; op[1] = '-'; op[2] = '*'; op[3] = '/'; std::cout << "Wert 1: "; std::cin >> wert1; std::cout << "Wert 2: "; std::cin >> wert2; for (int i = 0; i < 4; ++i) { switch (op[i]) { case '+': erg = wert1 + wert2; break; case '-': erg = wert1 - wert2; break; case '*': erg = wert1 * wert2; break; case '/': erg = wert1 / wert2; break; } std::cout << wert1 << op[i] << wert2 << " = " << erg << std::endl; } return 0; }
-
AFAIK funktioniert sowas nicht.
Du müsstest dir schon einen expression parser bzw. evaluator schreiben.
-
The C++ way:
This may contains errors. It's untested! 
#include <iostream> #include <map> int calculate_add(int a, int b) { return a + b; } int calculate_sub(int a, int b) { return a - b; } int calculate_mul(int a, int b) { return a * b; } int calculate_div(int a, int b) { return a / b; } int calculate_mod(int a, int b) { return a % b; } typedef int (*Calculator)(int, int); int main() { int wert1 = 0; int wert2 = 0; std::map<char, Calculator> calculators; calculators['+'] = calculate_add; calculators['-'] = calculate_sub; calculators['*'] = calculate_mul; calculators['/'] = calculate_div; calculators['%'] = calculate_mod; std::cout << "Wert 1: "; std::cin >> wert1; std::cout << "Wert 2: "; std::cin >> wert2; for (std::map<char, Calculator>::iterator it = calculators.begin(); it != calculators.end(); ++it) { std::cout << wert1 << it->first << wert2 << " = " << it->second(wert1, wert2) << std::endl; } return 0; }
-
Das letzte Beispiel geht genau in die Richtung mit der map.
Ich wollte halt, dass man nur die Einlesung in der Main macht, und per Aufruf (switch) die Methoden zur Rechenoperation z.B. Subtraktion... aufruft.
Aber das ist schon etwas fortgeschritten mit der map.
Danke trotzdem!!!
Hab's etwas rustikaler...