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

1

29.05.2014, 18:49

Listing 3.7 / if Variante stuerzt trotzdem ab. der autor sagt man könne den absturz verhindern.was ist falsch?

//listing 3.7
//versuch mit if bei 0
#include<iostream>
using namespace std;
int main ()
{
int Zahl;
int Divisor ;

cout << " geben Sie eine zahl ein " << endl;
cin >> Zahl;

cout << "geben sie einen divisor ein " << endl;
cin >> Divisor;
if (Divisor == 0)
cout << "Nicht moeglich ! " ;

cout<< " Das Ergebnis ist " << Zahl/Divisor << endl;
cout << " Der Rest betraegt " << Zahl%Divisor << endl;


return 0;
}

2

29.05.2014, 19:41

Du gibst das "Nicht möglich" aus wenn der Divisor 0 ist. das hat aber keine Auswirkung auf den Rest des Codes. Die Division wird trotzdem ausgeführt, da du ja nichts mit der if abfrage dagegen untenimmst sondern nur sagst: Wenn der Divisor 0 ist dann gib den text aus und sonst nix. (Der Computer weis schlieslich nicht, dass du wenn du den Text ausgibst er dann den Rest weglassen soll ;) ). Du solltest lieber abfragen ob der Divisor ungleich 0 ist und wenn ja, einfach die Rechenoperation ausführen und ansonsten einen Text ausgeben wie in deinem fall "nicht möglich".
mfg Suskritor :)

Zitat

Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.


Cookiezzz

Frischling

Beiträge: 91

Wohnort: Deutschland

Beruf: Schüler

  • Private Nachricht senden

3

29.05.2014, 19:43

Hi,
ich nehme an, der Absturz wird durch eine Division durch Null ausgelöst. Die Sicherheitsabfrage vor der Division ist unwirksam, da zwar auf Null geprüft, aber anschließend trotzdem geteilt wird. Die Lösung ist, die Ausgabe des Ergebnisses, bzw. die Berechnung in einen separaten Block zu schieben, der nur ausgeführt wird, wenn die Eingabe != Null ist.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//listing 3.7
//versuch mit if bei 0
#include<iostream>
using namespace std;
int main ()
{
int Zahl;
int Divisor ;

cout << " geben Sie eine zahl ein " << endl;
cin >> Zahl;

cout << "geben sie einen divisor ein " << endl;
cin >> Divisor;
if (Divisor == 0)
cout << "Nicht moeglich ! " ;

else
{
cout<< " Das Ergebnis ist " << Zahl/Divisor << endl;
cout << " Der Rest betraegt " << Zahl%Divisor << endl;
}

return 0;
}

4

29.05.2014, 19:56

Vielen Dank

Dankeschön fuer die Erklaerung , cookiezzz und suskritor =)
lets go -> ob ich das buch lese? -.- das hier ist ein forum und entschuldige dass ich dein gemuet gestoert habe indem du meine frage lesen musstest und deine zeit damit verschwendet hast... beim naechsten mal -> einfach nicht darauf antworten, dann sparst du dir wenigstens die paar sekunden -.-

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

29.05.2014, 22:12

Sorry, Jenieerre, aber LetsGo hat Recht. Die Vorsagerei von Cookiezzz hat sicherlich Deinen eigenen Denkprozess und damit die Lernleistung nicht sonderlich gesteigert. Selbst lesen, selbst denken und dann versteht man es auch viel besser.

PS:
Schreib bitte keine Geschichten in den Namen des Themas. Fass Dich kurz.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

29.05.2014, 23:40

Hallo BlueCobold, in dem Buch steht :" Wenn du rund um das BUCH FRAGEN , Kritik und Anregungen hast, dann schaue auf der Seite ... vorbei. Dort findest du ein DISKUSSIONSFORUM, Neuigkeiten über das Buch... "
Ich sehe nicht wo das problem liegt auch mal nachzufragen und komisch, dass die Leute die weniger Beiträge und Erfahrungen in diesem Forum haben, deutlich hilfsbereiter zu sein scheinen als die langeingesessenen o.O
Wenn du dabei wirklich an meine Denkprozesse und Lernleistung denkst, dann hilf mir doch lieber, dass ich mir auch ein besseres Bild vom Programmieren ansich machen kann. Ich bin erst seit 4 Tagen dabei, bringe keinerlei Vorkenntnisse mit und habe NIEMANDEN im Bekannten oder Freundeskreis, der mir mit Rat zur Seite stehen kann. Bevor ich dieses Buch gekauft habe , habe ich mich extra Informiert ob es ein Diskussionsforum dazu gibt, da mir klar war, dass wenn ich die Materie wirklich beherrschen moechte, ich dazu auch einige Fragen haben werde...
ps: das mit dem namen des themas ist ok, da werde ich drauf achten

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

7

29.05.2014, 23:53

Fragen stellen ist kein Problem, Code von anderen zu übernehmen schon.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

8

30.05.2014, 00:19

Fragen stellen ist kein Problem, Code von anderen zu übernehmen schon.

Inwiefern ist das "ein Problem"? Wenn ihn jemand die Lösung vorsagt kann er es ja nehmen wie er will. Und scheinbar war es ja doch ein Problem, eine Frage zu stellen, ansonsten wäre er nicht direkt mit "Lies das Buch" abgespeist worden. Er liest ja das Buch und hatte eine Frage dazu. O.O

@Jenieerre: Die anzutreffende Unfreundlichkeit und oft auch Arroganz nimmt hier leider in den letzten Jahren deutlich zu. ;) Anfängerfragen werden in diesem Forum in der Regel mit Antworten wie "Lies das Buch", "Google" oder "Denk mal selbst nach" beantwortet. Oft ist das leider auch nötig, da viele Fragen doppelt und dreifach gestellt werden oder einfach aus Faulheit entstehen, weil der Autor nicht selbst nachgedacht hat. Aber es ist nicht gerade Nett, dieses Vorgehen generell auf alle Beiträge anzuwenden. Also sofern du wirklich nicht weitergekommen bist (trotz Recherche und eigenem Denken), ignoriere einfach solche Antworten in kommenden Threads.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

30.05.2014, 06:43

Architekt, auch wenn ich Dir teilweise Recht gebe, übertreib's nicht. Das Thema "if else" ist im Buch. Ganz sicher. Für mich klingt es eher danach, dass hier übereifrig nachgefragt wurde statt das Buch halt wirklich zu lesen. Fragen stellen sehe ich nicht als Problem, nur ist die Qualität und Notwendigkeit der Frage nicht immer gegeben. Ich bin immer der Meinung, dass Vorsagen viel weniger hilft als die Person in die richtige Richtung zu schubsen. Selbstständiges Arbeiten und Recherchieren ist als Programmierer eine Notwendigkeit und dies muss man genau fördern, wie das Verständnis über Programmiersprachen. Der Hinweis sich IF und ELSE nochmal anzuschauen, ist daher aus meiner Sicht durchaus legitim.

Dass er zudem gleich so ausflippt, wenn man ihm mitteilt, dass eigenständige Arbeit zu höherem Lerneffekt führt, nun ja, was soll ich dazu jetzt sagen? Es ist aggressiv. Ich sehe nicht, wieso Du das verteidigst, Architekt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

10

30.05.2014, 10:01

Fragen stellen ist kein Problem, Code von anderen zu übernehmen schon.

Inwiefern ist das "ein Problem"? Wenn ihn jemand die Lösung vorsagt kann er es ja nehmen wie er will. Und scheinbar war es ja doch ein Problem, eine Frage zu stellen, ansonsten wäre er nicht direkt mit "Lies das Buch" abgespeist worden. Er liest ja das Buch und hatte eine Frage dazu. O.O
Fremdcode zu übernehmen hat keinen so großen Lerneffekt wie selbst Code zu schreiben. Bei weitem nicht. Ich z.B. poste hier im Forum egtl. gar keine lauffähigen Codes (Außer aus eigenen Projekten), sondern maximal Pseudocode. Es ist aus meiner Sicht einfach falsch, einem Anfänger Code zu geben, der sein Problem löst. Viel eher sollte man Hinweise geben, ihn fragen, was genau der Computer denn eigentlich machen muss. Wenn er das weiß, kann er in sein Buch gucken (Das von Kallista ist egtl. ein super Nachschlagewerk für C++-Anfänger) und die entsprechenden Codefragmente nachschlagen, um sie für seine Zwecke zu implementieren.

Auf diesem Weg lernt er dann nämlich die richtige Denkweise kennen, erst Konzept erstellen, dann Coden. Ungefähr so, wie es in jedem Informatik-Studium gemacht wird.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Werbeanzeige