Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Kehrwert berechnen (C++) (http://www.informatikerboard.de/board/thread.php?threadid=1455)


Geschrieben von hüliet am 11.04.2013 um 00:34:

  Kehrwert berechnen (C++)

Meine Frage:
Schreiben Sie ein Programm kehrwert, das eine Fließkommazahl von der Standardeingabe erwartet und den Kehrwert der Zahl ausgibt. Überprüfen Sie mit einer if-Anweisung, ob eine gültige Zahl eingegeben wurde.

Meine Ideen:
Ich habs erstmal so gemacht, weiß aber nicht, ob man das so machen kann. Mit der if-Anweisung habe ich Probleme, denn ich weiß nicht genau, wie die Bedingung lauten muss.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
#include <iostream>
using namespace std;

int main() {

double a,b;

cout << "Bitte eine Fließkommazahl eingeben." << endl;

cin >> a;

if(a == (double)a ) {
   b = 1/a;
   cout << "Der Kehrwert der von Ihnen eingegebenen Zahl lautet " << b << "." << endl;
}

else cout << "Sie haben keine Fließkommazahl eingegeben." << endl;

}


Hm... das ist bestimmt nicht korrekt.

Wenn ich zum Beispiel a eingebe, steht dort

"Der Kehrwert ist inf."



Geschrieben von eulerscheZahl am 11.04.2013 um 08:12:

 

Bei Zeichenketten allgemein kommt Unsinn heraus, die abzufangen ist aber etwas aufwendiger.
Aber bei einer Zahl ist es offensichtlich, dass der Kehrwert keinen Sinn macht: 0

code:
1:
if(a == (double)a )

a ist vom Typ double, somit stimmt der Vergleich immer, du hast also geschrieben if(true)



Geschrieben von hüliet am 11.04.2013 um 11:27:

 

hey

das mit den zeichenketten scheint wohl etwas schwieriger zu sein (und ich glaube nicht, dass wir das machen müssen, denn es ist ein anfängerkurs).

du meinst also ich müsste erstmal nur den Fall abfangen, dass der benutzer die zahl 0 eingegeben hat?



Geschrieben von hüliet am 11.04.2013 um 11:35:

 

also konkret:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
#include <iostream>
using namespace std;

int main() {

double a,b;

cout << "Bitte eine Fließkommazahl eingeben." << endl;

cin >> a;

if(a != 0 ) {
   b = 1/a;
   cout << "Der Kehrwert der von Ihnen eingegebenen Zahl lautet " << b << "." << endl;
}

else cout << "0 hat keinen Kehrwert." << endl;



Geschrieben von Karlito am 11.04.2013 um 12:06:

 

Hallo,

ich denke man soll einen String einlesen und mit strtof prüfen, ob es sich um eine Fließkommazahl handelt. So kompliziert ist das nicht auch wenn es für einen Anfänger eine kleine Hürde darstellt, da man hier mit Zeigern arbeiten muss. Wurden Zeiger bereits behandelt?

VG,

Karlito


Forensoftware: Burning Board, entwickelt von WoltLab GmbH