Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ecsl

Frischling

  • »ecsl« ist der Autor dieses Themas

Beiträge: 41

Wohnort: Kaiserslautern

Beruf: Meteorologie Student

  • Private Nachricht senden

1

08.07.2005, 21:38

Verständnisfrage

Hallo zusammen,

Ich bin gerade dabei eine Ausbildung für Visual C++ zu machen
und es gab folgende Aufgabenstellung.
Vielleicht kann mir jemand sagen ob das so richtig ist.
Ich glaube zwar nicht denn ich verstehe das system mit den
double Befehlen nicht ganz.

Folgende Aufgabe wird gestellt:

Schreiben Sie ein Programm, das 2 Integer-Werte über die Tastatur einliest.
Der erste eingelesene Wert soll durch den zweiten eingelesenen Wert dividiert werden.
Die Ausgabe soll als Typ double erfolgen.

2.3

Beim Testen ist das dividieren durch Null "verboten".

So nun meine Frage:

Wenn ich das nun teste und durch Null dividiere so erhalte ich automatisch vom Computer eine Meldung das
dividieren durch Null nicht möglich ist. Der Nachteil der Meldung mein Rechner stürzt ab!
Muss ich nun extra eine Meldung verbunden mit einem Programmabbruch einfügen oder
ist der absturz der Sinn und Zweck der erreicht werden soll?


Code:

#include <iostream.h>


void main()
{

// Variablen deklaration
int eingabe1;
int eingabe2;
double ausgabe;


cout << " Zahl 1: ";
cin >> eingabe1;
cout << " \n\n Zahl 2: ";
cin >> eingabe2;
cout.precision(18);
ausgabe = eingabe1 / eingabe2;
cout << " \n\n Ergebnis: " << ausgabe;


char p[50];
cin.getline(p,50);
cin.getline(p,50);
}



Danke euch

Gruß Eike

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

2

08.07.2005, 21:41

Du könntest ja einfach überprüfen, ob der zweite Wert = 0 ist. Wenn du diese Abfrage vor der Division und der Ausgabe des Ergebnisses durchführst, kannst du ja abbrechen und eine eigene Meldung ("Division durch 0") ausgeben. Wenn der zweite Wert != 0 ist, rechne weiter.
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

3

08.07.2005, 22:28

8) so wie unsigned int würde ich es auch machen.

ecsl

Frischling

  • »ecsl« ist der Autor dieses Themas

Beiträge: 41

Wohnort: Kaiserslautern

Beruf: Meteorologie Student

  • Private Nachricht senden

4

08.07.2005, 22:51

ok danke euch.

5

08.07.2005, 23:22

Re: Verständnisfrage

Hi ecsl!

Zitat von »"ecsl"«

ausgabe = eingabe1 / eingabe2;

Hier steckt ein wichtiger Fehler! Weil eingabe1 und eingabe2 beides Integer sind, ist diese Rechnung eine Ganzzahl-Division. Das heisst, das Ergebnis ist auch immer eine Ganzzahl. Wenn also beispielsweise eingabe1 9 und eingabe2 5 ist (9 / 5 = 1.8), so ist ausgabe gleich 1.0 und nicht gleich 1.8!!! Die Ursache ist das implizite Casting von C++. Oder ist es erwünscht, dass alles hinter dem Komma ignoriert wird?
==>>> Das Kapitel 6 (Casting - implizit und explizit) dieser Seite informiert über Casting.

Ausserdem solltest du einmal hier klicken wegen deiner main-Funktion.

Viel Spass weiterhin beim Programmieren!

Grüsse
Benjamin

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

09.07.2005, 11:54

@bffischer:

Nein er würde 1.8 in ausgabe speichern, da diese ja vom Typ double ist, und nicht ein Ganzzahl Typ. Wenn ausgabe vom Typ int wäre dann hast du Recht.

ecsl

Frischling

  • »ecsl« ist der Autor dieses Themas

Beiträge: 41

Wohnort: Kaiserslautern

Beruf: Meteorologie Student

  • Private Nachricht senden

7

09.07.2005, 13:10

Stimmt Typecasting ist das Stichwort.

Jetzt funktioniert es auch wie es soll.

Danke euch.

Mastermind

unregistriert

8

09.07.2005, 13:25

Zitat von »"koschka"«

@bffischer:

Nein er würde 1.8 in ausgabe speichern, da diese ja vom Typ double ist, und nicht ein Ganzzahl Typ. Wenn ausgabe vom Typ int wäre dann hast du Recht.


Wenn ich mich jetzt nicht schwer täusche bestimmen die operanden das ergebnis und das wird dann zu double gecastet. Da hat der Fischer recht.

Statt einer eigenen Überprüfung könnte man die Divison durch 0 Exception auch einfach fangen und eine entsprechende Meldung ausgeben, dann stüzt das Programm auch nicht ab. Nur so als Anregung.

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

9

09.07.2005, 15:09

richtig,
aber ich denke, dass das mit der eigenen Abfrage ein einfacherer Weg ist für jemanden, der noch im "aktiven Lernprozess" ist (jaja, niemand lernt aus :P) und vielleicht noch nicht viel über Exceptions weiß. ;)
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Mastermind

unregistriert

10

10.07.2005, 01:48

Hier bringe ich aml einen "passt immer" Satz:

Es ist doch gut, mehrere Lösungsmöglichkeiten zu kennen.

Werbeanzeige