Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   wo ist der programmfehler? (https://www.tweakpc.de/forum/programmiersprachen/10813-wo-ist-der-programmfehler.html)

_Smash_ 26.09.2003 19:48

wo ist der programmfehler?
 
ja es ist primitiv und ja es ist nicht elegant :-)

und es hat auch noch einen fehler...
aber ich sehe ihn nihct.

ihr?

[code]
#include <stdlib.h>
#include <iostream.h>
#include <stdio.h>
#include <ctype.h>

int main ()
{

double x,y ;
char c ;




do
{

cout << "bitte zaehler eingeben: " ;

if(! (cin >> x))
{
cerr << endl << endl << "zaaahhlen junge..... zaahlen!" << endl << "auf, nochma!" << endl << endl;
continue;
}

cout << "bitte nenner eingeben: " ;

if(! (cin >> y))
{
cerr << endl << endl << "zaaahhlen junge..... zaahlen!" << endl << "auf, nochma!" << endl<< endl;
continue;
}



if(y==0)
{
cout << endl << "division durch 0.... schaem dir!" << endl;
cout << "probiers nochma!" <<endl <<endl;
continue;
}



else
{
cout << "das ergebnis ist: " <<x/y << endl ;
}

cout << endl;


cout << "hast du genug? weicheier druecken e oder E" << endl;
cin >> c;
cout << endl;

if (c=='e') break;
if (c=='E') break;

}while (1);

cout << "Weichei....Abbrecher....Rausgeher!!" << endl ;

getchar ();

return 0;
}
[/code]

wenn man einen buchstaben bei für x und y eingibt sollte der code in der if anweisung ausgeführt werden. das tut er auch, aber danach macht das programm gaaanz blöde dinge...

sys3 26.09.2003 22:45

Ich sehe gerade auch keinen Fehler - daher die Frage: Was für blöde Dinge denn?

_Smash_ 27.09.2003 08:51

wenn man einen ungültigen wert, also zb das 'a' eingibt, dann macht er dieses hier:

[img]http://mitglied.lycos.de/riess/pics/prog.jpg[/img]

er führt den code ganz normal aus, allerdings übergeht er die eingabe und nimmt einen falschen wert von vorneherein an...
ergebins.. er hängt in einer art endlosschleife.

sys3 27.09.2003 13:14

Lösch mal den Tastaturpuffer vor jeder Eingabe (müsste flushkb() oder so ähnlich heißen).

_Smash_ 27.09.2003 13:18

endl löscht den tastaturpuffer aber auch.

nen kumpel hats jetzt irgendwie herausgefunden

wenn man die include dateien so ändert:

[code]#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <ctype.h>

using namespace std;[/code]
und noch 2 komische zeilen einfügt

[code]cout << "bitte zaehler eingeben: " ;

if(! (cin >> x))
{
cin.clear();
cin.seekg(0, ios::end);

cerr << endl << endl << "zaaahhlen junge..... zaahlen!" << endl << "auf, nochma!" << endl << endl;
continue;
}[/code]

dann gehts aus irgend einem grund.... warum kann ich aber (noch) nicht erfassen...

BomberD 28.09.2003 08:51

die beiden zeilen 'löschen' wohl den eingabestream...

ich bin mir aber recht sicher dass ich ein ähnliches programm ohne große probleme mit c++ schreiben konnte...

reicht da nicht die erste zeile cin.clear() ?

_Smash_ 28.09.2003 10:38

aber wieso diese änderung der include dateien?

iostream und iostream.h?

Dr. BeSt 28.09.2003 17:15

Nur mal nebenbei bemerkt: So ein Programm könnte man auch viel einfacher lesbar (ohne diesen C++ typischen Hiroglyphen-Tingeltangel) in Basic schreiben - mit dem gleichen Ergebnis. :)

_Smash_ 29.09.2003 09:01

man könnte es auch in jeder anderen programmiersprache schreiben, das ist aber nicht der sinn der sache.

BomberD 29.09.2003 09:54

@smash:

das mit iostream ohne 'h' seh ich jetzt erst. keine ahnung was das soll.
was sagtn die hilfe dazu?

gibs bei dir ne datei die nur include heist und keine endung hat?

stell mal das h dahinter und lösch die zeile unter cin.clear()
dann gehts nimmer?

@dr. best:

mit diesem hyroglyphen tingeltangel kann man ein programm auch lesbarer machen.

ich finde visual basic unübersichtlicher.

hab shcon überlegt die klammern aus c++ zu nutzen und diese dann auszukommentieren ;)

ist alles gewohnheit.

_Smash_ 29.09.2003 10:32

hi.

mit iostream.h wird das namespace nicht erkannt.
und ohne das cin.seekg(0, ios::end); geht er wieder in die endlosschleife.

Dr. BeSt 29.09.2003 15:03

[quote=BomberD]@dr. best:

mit diesem hyroglyphen tingeltangel kann man ein programm auch lesbarer machen.[/quote]
Deshalb haben die das wohl auch so entworfen.
Aber Basic-Sprachen kann man i.d.R. fast wie einen englischen Text weglesen - und wenn man mal komplexere Programme schreiben muss, dann kann man ja auch mit simplen Mitteln (wie Einrücken durch Tabs o.ä.) den Code lesbarer formatieren.

Naja, ich merke schon, das wird eine Grundsatzdiskussion die keinen weiterbringt...! :denker:

_Smash_ 29.09.2003 18:50

vor allem weil ich diese sprache benutzen muss :-) aber WER würde sich denn auch schon freiwillig solch ein programm schreiben...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.