Hilfe bei Grundrechenarten+Strings
-
Hallo,
im folgenden habe ich versucht einen Quellcode zu programmieren der mir die Grundrechenarten ausgibt. Dabei gibt es schon kleine Probleme die ich nicht zu lösen weiß. Das größte wäre jedoch das ich versuchen will die Zeichenkette auf min 20 Ziffern zu setzten. Hab mir jetzt vieles über Strings und Char... durchgelesen, weiß aber nicht recht wie ich es anwenden soll, wär echt nett wenn Ihr mir dabei hilft.
Erster Versuch:
#include <iostream>
#include<string>
#include<mathh>
using namespace std;
int main()
double float Zahl1; //1.Zahl
double float Zahl 2; //2. Zahl
int Frage; // siehe Cout 3
double float Ergebnis;cout<<"Geben Sie die 1. Zahl ein"<<endl;
cin>>Zahl1;
cout<<"Geben Sie die 2. Zahl ein"<<endl;
cin>>Zahl2;
cout<<"Wollen Sie addieren (1), subtrahieren (2), multiplizieren (3) oder dividieren (4)?">>endl;
cin>>Frage;switch (Frage)
{
case 1:
{ Ergebnis=Zahl1+Zahl2;
cout<<Ergebnis<<endl;
break;
}
case 2:
{ Ergebnis=Zahl1-Zahl2;
cout<<Ergebnis<<endl;
break;
}
case 3:
{ Ergebnis=Zahl1*Zahl2;
cout<<Ergebnis<<endl;
break;
}
case 4:
{ Ergebnis=Zahl1/Zahl2;
cout<<Ergebnis<<endl;
break;
}
default;
{
cout<<"Error";
break;
}
}das wäre mein Quellcode, das ganz habe ich dann auch mal mit if versucht, allerdings würde mir ein veranschaulichter Ansatz schon dicke langen.Bin ein echter Anfänger!
MfG
-
Erstens: sfds
Zweitens: Was bitteschön ist ein 'double float'?
Drittens: Einen Header <mathh> gibt es nicht - höchstens <math.h> (alias <cmath>), der für das Programm unnötig ist.
Viertens: Wo genau hast du Probleme? Und was hat das Programm mit Strings zu tun?
-
Jetzt funktioniert dein Programm erstmal.
#include <iomanip> #include <iostream> using namespace std; int main() { double Zahl1; //1.Zahl double Zahl2; //2. Zahl int Frage; // siehe Cout 3 double Ergebnis; cout<<"Geben Sie die 1. Zahl ein"<<endl; cin>>Zahl1; cout<<"Geben Sie die 2. Zahl ein"<<endl; cin>>Zahl2; cout<<"Wollen Sie addieren (1), subtrahieren (2), multiplizieren (3) oder dividieren (4)?"<<endl; cin>>Frage; switch (Frage) { case 1: Ergebnis=Zahl1+Zahl2; cout<< Ergebnis<<endl; break; case 2: Ergebnis=Zahl1-Zahl2; cout<<Ergebnis<<endl; break; case 3: Ergebnis=Zahl1*Zahl2; cout<<Ergebnis<<endl; break; case 4: Ergebnis=Zahl1/Zahl2; cout<< setprecision(8)<<Ergebnis<<endl; break; default: cout<<"Error"; } }#include <iomanip> einbinden!
Mit showpoint ist dann die Ausgabe immer mit Dezimalpunkt und Nachkommastellen,
mit setprecision() setzt man die Genauigkeit. z.B. cout << showpoint << setprecision(8) << Ergebnis << endl;
Lese mal über Manipulatoren in der STL nach.
-
#include <iostream> #include <string> #include <math.h> #include <conio.h> using namespace std; int main() { double Zahl1; //1.Zahl double Zahl2; //2. Zahl int Frage; // siehe Cout 3 double Ergebnis; cout<<"Geben Sie die 1. Zahl ein"<<endl; cin>>Zahl1; cout<<"Geben Sie die 2. Zahl ein"<<endl; cin>>Zahl2; cout<<"Wollen Sie addieren (1), subtrahieren (2), multiplizieren (3) oder dividieren (4)?"<<endl; cin>>Frage; switch (Frage) { case 1: { Ergebnis=Zahl1+Zahl2; cout<<Ergebnis<<endl; break; } case 2: { Ergebnis=Zahl1-Zahl2; cout<<Ergebnis<<endl; break; } case 3: { Ergebnis=Zahl1*Zahl2; cout<<Ergebnis<<endl; break; } case 4: { Ergebnis=Zahl1/Zahl2; cout<<Ergebnis<<endl; break; } default: { cout<<"Error"; break; } } getch(); return 0; }Waren einige Syntax-Fehler drin und die Fehler die ihm Post über diesem erwähnt werden!
-
Ertsmal vielen Dank für die schnellen und vor allendingen hilfreichen Antworten.
Echt super!
Jetzt noch eine Frage: in der Aufgabe steht drin, dass die Zeichenketten mindestens 20 Ziffern aufnehmen müssen, daher dachte ich, ich müsste das mit Strings, arrays oder so lösen, bin mir aber nicht sicher wie man das macht und heil froh, das wenigstens bis jetzt der Großteil gestimmt hat.
Hat das viele Lesen und Probieren ja doch einen Sinn:)
-
Was bitteschön ist ein 'double float'?
Genauso etwas ähnliches wie ein 'long int', also C (bzw. C++) standard-konform!
-
Th schrieb:
Genauso etwas ähnliches wie ein 'long int', also C (bzw. C++) standard-konform!
Also entweder Du verwechselst das mit long float bzw. long double oder die Compilerhersteller GNU und MS haben in diesem Punkt den Standard nicht gelesen

-
Th schrieb:
Was bitteschön ist ein 'double float'?
Genauso etwas ähnliches wie ein 'long int', also C (bzw. C++) standard-konform!
'long' ist ein Typ-Modifizierer, deshalb sind die Typen 'long int' und 'long double' auch gültig ('long' alleine ist ein Synonym für 'long int'). Aber 'double float' ist einfach nur Nonsens.
-
CStoll schrieb:
Th schrieb:
Was bitteschön ist ein 'double float'?
Genauso etwas ähnliches wie ein 'long int', also C (bzw. C++) standard-konform!
'long' ist ein Typ-Modifizierer, deshalb sind die Typen 'long int' und 'long double' auch gültig ('long' alleine ist ein Synonym für 'long int'). Aber 'double float' ist einfach nur Nonsens.
Obwohl ich verstehen kann, dass man double als "long für float" verstehen kann.... ich meine "double" sagt für eine Zahl genausowenig aus wie "long" ...

Und im Formatstring von printf wird ja eine ähnliche Analogie nahegelegt: "%d" -> "%ld" und "%f" -> "%lf")....Gruß,
Simon2.
-
Ja, ihr habt recht, ich meinte 'long double' (schäm).