Die letzten 4 Beiträge |
Dragon_Fighter |
Hallo, Airblader.
Stimmt, eigentlich könnte man ja die Zahl x gleich vom Typ double auffassen.
Dann hätte ich dieses:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
#include <iostream>
using namespace std;
int main() {
double x=1,w,y,f;
w=(x-1)*(x-1);
y=((x-1)/(x+1))+w;
f=1+x+((x*x)/(double)2)+((x*x*x)/((double)6))+((x*x*x*x)/((double)24));
cout << w << endl;
cout << y << endl;
cout << f << endl;
} |
|
Das sieht schon viel schöner aus - finde ich. Denn ich muss nur noch die Nenner in den Typ double umwandeln. Oder muss ich das gar nicht, weil es reicht, wenn der Zähler vom Typ double ist?
Ich habe das mal ausprobiert, also:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
#include <iostream>
using namespace std;
int main() {
double x=1,w,y,f;
w=(x-1)*(x-1);
y=((x-1)/(x+1))+w;
f=1+x+((x*x)/2)+((x*x*x)/(6))+((x*x*x*x)/(24));
cout << w << endl;
cout << y << endl;
cout << f << endl;
} |
|
und tatsächlich, das liefert ebenfalls
code: |
1:
2:
3:
|
0
0
2.70833 |
|
.
Also liege ich wohl richtig damit, dass es vollkommen ausreichend ist, dass der Zähler von diesem Typ ist.
Edit: Jetzt lese ich, dass eulerscheZahl das ja auch schon geschrieben hatte, sorry, total überlesen.
|
Airblader |
Ich würde die Zahlen einfach vorher schon konvertieren. Für ganzzahlige x muss bereits y eine Fließkommazahl sein (dass y für x=1 ganzzahlig ist, ist "Glück") und eigentlich lese ich in der Aufgabenstellung auch nichts davon, dass die Eingabe x unbedingt ganzzahlig ist.
Zitat: |
also z.B. 2.0 (die 0 brauchst du nicht unbedingt, 2. geht genauso) |
Bitte nicht! |
eulerscheZahl |
Ja, das geht kürzer:
code: |
1:
|
f=1 + x + x*x/2.0 + x*x*x/6.0 + x*x*x*x/24.0; |
|
1. int + double = double
es reicht also, wenn eine der beiden Zahlen double ist, ebenso bei /
2. Zahlen kann man einfach mit .0 am Ende umwandeln, also z.B. 2.0 (die 0 brauchst du nicht unbedingt, 2. geht genauso) |
Dragon_Fighter |
Typumwandlungen C++
Meine Frage:
Formulieren Sie aus den folgenden Ausdrücken C++-Anweisungen:
Berechnen Sie den Wert der Ausdrücke für .
Meine Ideen:
Also ich habe das so gemacht (bestimmt sehr umständlich, aber ich möchte ja für f auch die Dezimalzahl haben):
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
|
#include <iostream>
using namespace std;
int x=1,w,y;
double f;
w=(x-1)*(x-1);
y=((x-1)/(x+1))+w;
f=1+(double)x+(((double)x*(double)x)/(double)2)+(((double)x*(double)x*(double)x)/((double)6))+(((double)x*(double)x*(double)x*(double)x)/((double)24));
cout << w << endl;
cout << y << endl;
cout << f << endl;
|
|
Nach dem Compilieren und der Ausführung ergibt sich
code: |
1:
2:
3:
4:
5:
|
0
0
2.70833
|
|
Ist ja richtig, aber kann man das mit der expliziten Typumwandlung irgendwie praktischer/ kürzer machen?
Viele Grüße
Dragon_Fighter |
|
|