Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Typumwandlungen C++ » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

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.

großes Grinsen
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:

[latex]w=(x-1)^2[/latex]

[latex]y=w+\frac{x-1}{x+1}[/latex]

[latex]f=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\frac{x^4}{4!}[/latex]


Berechnen Sie den Wert der Ausdrücke für [latex]x=1[/latex].

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