Bloodshed C++ Compiler will Quelltext nicht vollständig ausgeben

yuro

Erfahrenes Mitglied
Guten Tag liebe User,

Ich beschäftige mich zur Zeit mit C++ und hab da mal ne Frage.

Und zwar geht es darum das ich ein Bsp Quelltext geschrieben habe, doch der Compiler von dem Programm Bloodshed C++ will ihn mir nicht vollständig ausgeben.

Und zwar hier der Quelltext:

#include <iostream>


using namespace std;


int main(void) {

int var1, var2, var3;

cout << "Operand 1: ";
cin >> var1;

cout << "Operand 2: ";
cin >> var2;

-------------------------bis hier hin funktioniert alles... Da gibt er auch alles aus

Ab der Multiplikation gibt er weiter nicht aus... dann bricht er den Vorgang ab und schliesst das auszugebende Fenster...

An was kann das liegen?


cout << "Multiplikation: " << var1 << " * " << var2 << " = " << (var1*var2) << '\n';

var3 = var1 + var2;
cout << "Addition: " << var1 << " + " << var2 << " = " << var3 << '\n';

(!var2) ?var2=1 :var2=var2;
cout << "Division: " << var3 << " / " << var2 << " = " << (var3/var2);
cout << "(Rest: " << (var3%var2) << ")\n";

var1 = var3 - var2;
cout << "Subtraktion: " << var3 << " - " << var2 << " = " << var1 << '\n';

return 0;
}
 
Moin,

warum macht Du es bei Multiplikation nicht so wie bei Addition und Division :confused:

Java:
var3 = var1 * var2;
cout << "Multiplikation: " << var1 << " * " << var2 << " = " << var3 << '\n';

Gruß
Klaus
 
Hallo yuro,

erst einmal würde ich dich bitten Programmcode in CodeTags zu schreiben. In deinem Fall
[ CPP]DeinCode[ /CPP]. So wird der Programmcode vom übringen text abgehoben und
syntaxhiglight gibts dazu :)

Zu deinem Problem:
Dein Programm tut nur das was du möchtest. Ausgegeben wird alles. Allerdings beendet das
Programm am Ende sofort, da du nicht sagst "warte hier".

C++:
std::cin.get();
return 0;

Hierbei kann es zu dem Problem kommen, dass der Eingabepuffer nicht leer ist und das
Programm trotzdem ohne zu warten beendet. Wie du das löst überlasse ich dir.

Desweiteren:
C++:
(!var2) ?var2=1 :var2=var2; // var2=var2?

Weshalb machst du es auf diesem Weg? var2=var2 ist unnütz. Leserlicher wäre es so:
C++:
if (!var2) var2 = 1;

Was ich dazu noch anzumerken habe: Da var2 kein bool ist, sondern ein int sollte man var2 auch mit einer Zahl vergleichen(Wenn du die Deklaration von var2 nicht unmittelbar siehst
kannst du, wenn du auf eine Zahl prüfst trotzdem schon rückschlüsse darauf ziehen welcher
Datentyp sich dahinter verbirgt). So hat man es mir mal erklärt, was ich auch für sinnvoll halte.

C++:
if (var2 < 1) var2 = 1;
 
Zuletzt bearbeitet von einem Moderator:
also mit dem cin.get() hab ichs auch versucht... der beendet mir automatisch nach dem ausrechnen das programm...

das war vorher nie so... ich weiss ned was da los ist mit dem programm..

das war nur son beispiel....

es geht mir hauptsächlich drum das dieses Programm also dev c++ nicht richtig funktioniert...

weil nach cout und cin bearbeitet er schnell die schleife und schliesst das fenster direkt ohne das ich wirklich draufschauen kann und mit ENTER dann beenden kann.

habs jetzt mit deiner variante auch ausprobiert... geht auch nicht... irgendwas stimmt mit dev c++ ned... man man man
 
Doch, das stimmt einwandfrei. Die Eingabe deines Variabelnwertes hinterlässt ein \n im Eingabepuffer, so wie ich das gesehen habe in der Referenz. Dadurch wird std::cin.get() das zurückgeben, da ja der Eingabepuffer nicht leer ist. Dau kannst diesen wieder zurücksetzen über std::cin.sync().
 
ich habs gefunden... ES GEHT

ich danke nochmal für eure kommentare :)

könnt den thread schliessen

THX
 
Wenn du es nur kurz offenhalten willst (Bsp 2 sek) dann kannst du auch windows.h includen und dann mit sleep(Zeit in Milisekunden) solange warten lassen wie du möchtest.
 
Zurück