Hilfe bei Programm(Anfänger)
-
@Chri5
Wobei du auf jedenfall noch folgende Korrekturen vornehmen solltest:-Nach aktuellem C++-Standard heißt es <iostream> im namespace std; und nicht <iostream.h>
Also:#include <iostream> using namespace std;
- Es heißt int main() und nicht void main()
@nicknack2002
Um ein gutes C++-Buch zu erhalten, solltest du mal hier im Forum unter der Rubrik Bücher nachschauen und/oder dir diesen Thread anschauen.Caipi
-
Wieso hört niemand auf borg?
#include <iostream> using namespace std;
edit: ups zu spät
mecnels Lösung ist fehlerhaft:
double statt float, sonst funzt der Vergleich nicht. Außerdem hört seine noch so tolle goto-pseudo-Schleife nie auf...
-
hi,
also ich hab im letzten semester prog besucht ... und da hat man uns das halt so beigebracht ..... naja ..is das denn schlimmm mit dem *.h .....
ok ich glaub wir haben so c und c++ gemsicht gemacht ..deswegen wahrscheinlich auhc void main (void) ...
chris
-
Danke ihr habt mir sehr sehr geholfen! Ich werde jetzt versuchen eure Tipps umzusetzen. Goto wollte ich nur benutzen weil es eh nur einmal vorkommt. In meinem Buch wurde mir ausdrücklich davor gewarnt
-
chri5 schrieb:
hi,
also ich hab im letzten semester prog besucht ... und da hat man uns das halt so beigebracht ..... naja ..is das denn schlimmm mit dem *.h .....
ok ich glaub wir haben so c und c++ gemsicht gemacht ..deswegen wahrscheinlich auhc void main (void) ...
chrisBzg. Standardheader siehe hier.
Und bzg. void main() siehe hier.
Caipi
-
an chri5 und mecnels, man kann float nicht auf gleichheit überprüfen!!!!!
das funktioniert so wie ihr das gemacht habt im zweifelsfall nicht.
-
Das Programm funktioniert jetzt einwandfrei.
Es wird jetzt nur überprüft ob eine Zahl eingegeben wurde. Es hängt sich aber auf wenn man Buchstaben etc. eingibt! Wei kann ich das Problem lösen?!
-
borg schrieb:
an chri5 und mecnels, man kann float nicht auf gleichheit überprüfen!!!!!
das funktioniert so wie ihr das gemacht habt im zweifelsfall nicht.+1
-
nicknack2002 schrieb:
Danke ihr habt mir sehr sehr geholfen! Ich werde jetzt versuchen eure Tipps umzusetzen. Goto wollte ich nur benutzen weil es eh nur einmal vorkommt. In meinem Buch wurde mir ausdrücklich davor gewarnt
Goto ist übrigens auch ein Standard C++ Befehl, und zwar einer der ältesten überhaupt. Weil sich (theoretisch zumindest) jedes Programm auch ohne goto schreiben lässt, sieht es ein bisschen unbeholfen aus. Außerdem wird es ziemlich kompliziert, dem Programmverlauf zu folgen, wenn man mit goto um sich wirft. Trotzdem - es gibt auch Fälle, in denen ist man doch ganz froh, tief verschachtelte Schleifen einfach mit goto abbrechen zu können (z.B. weil break nur die innerste Schleife beenden würde, man aber aus allen Schleifen sofort hinaus springen möchte. Also ganz so ist das nicht, dass goto immer schlecht ist.
In Deinem Programm bewirkt das goto allerdings leider, dass das Programm endlos läuft. Vielleicht führst Du einen weiteren Menüpunkt ein, etwa '1.6 für Beenden', dann wär' auch dieses Problem behoben.M.
-
ja, im zweifelsfall gehts nicht .... aber hier wirds wohl schon noch klappen ... hab ich auch geschrieben das man so was net macht
...
chris
-
Mein Programm sieht jetzt so aus:
#include <iostream.h> #include <conio.h> int main() { double wahl,r,h; cout << "Copyright 15.1.2004 by nicknack2002\n\n\n"; while (wahl != 9) { cout << "Volumenberechnung oder Oberfleachenberechnung eines Zylinders:\n\n"; cout << "1. Oberflaeche\n" << "2. Volumen\n\n" << "9.Beenden\n" << "Bitte Weahlen: "; cin >> wahl; if (wahl == 1) { cout << "\nHoehe: "; cin >> h; cout << "\nRadius: "; cin >> r; cout << "\nOberflaeche: " << 2*3.14*r*(r+h); } if (wahl == 2) { cout << "\nHoehe: "; cin >> h; cout << "\nRadius: "; cin >> r; cout << "\nVolumen: " << 3.14*r*r*h; } if (wahl != 1 && wahl != 2 && wahl != 9) { cout << "Bitte wiederholen sie ihre Eingabe!\n\n\n\n"; } } return 0; }
Wenn ich jetzt bei der Wahl keine Zahl sondern einen Buchstaben schreibe läuft die schleife endlos-was kann ich machen(außer jeden Buchstaben einzugeben...) ?
-
#include <iostream> using namespace std; int eingabe( ) { int i; while (!(cin >> i)) { cout << "das war kein int!" << endl; cin.clear( ); cin.get( ); } return i; } int main() { cout << "Copyright 15.1.2004 by nicknack2002\n\n\n"; int wahl = 0; while (wahl != 9) { cout << "Volumenberechnung oder Oberfleachenberechnung eines Zylinders:\n\n"; cout << "1. Oberflaeche\n" << "2. Volumen\n\n" << "9.Beenden\n" << "Bitte Weahlen: "; wahl = eingabe( ); if (wahl == 1) { cout << "\nHoehe: "; int h = eingabe( ); cout << "\nRadius: "; int r = eingabe( ); cout << "\nOberflaeche: " << 2*3.14*r*(r+h); } if (wahl == 2) { cout << "\nHoehe: "; int h = eingabe( ); cout << "\nRadius: "; int r = eingabe( ); cout << "\nVolumen: " << 3.14*r*r*h; } if (wahl != 1 && wahl != 2 && wahl != 9) cout << "Bitte wiederholen sie ihre Eingabe!\n\n\n\n"; } }
herausfinden ob die eingabe korrekt war kannst du mit
if( cin.fail() ) //true, falls falsche eingabe
man kann aber auch einfach schreiben
if( !cin )
das ist das gleiche
also machen wir daraus doch einfach
while (!(cin >> i) )
damit wir nicht in einer endlosschleife landen müssen wir in der schleife noch machen
cin.clear( ) // clear setzt die Zustandsflags wieder auf "alles heile" cin.get( ) // zeilenumbruch rausholen
-
HansImSuff schrieb:
M.
M wie Mecnels?
-
Mecnels schrieb:
Und überleg Dir, C++ Das Grundlagen Buch (Data Becker), zu beschaffen, das Buch ist die #1 wenn's um's Erwerben der Standard-C++ - Kenntnisse geht.
Das erklärt einiges ...
-
Walli schrieb:
Mecnels schrieb:
Und überleg Dir, C++ Das Grundlagen Buch (Data Becker), zu beschaffen, das Buch ist die #1 wenn's um's Erwerben der Standard-C++ - Kenntnisse geht.
Das erklärt einiges ...
Das Buch ist klasse!
Mein Nick ist ein Anagramm.
Ich bin natürlich nicht 59 sondern 25 (ist meine Angewohnheit, das Klima
in Foren, auf denen ich neu bin, durch Aufsetzen von Masken zu erforschen,
sorry :))
Jedenfalls sind die meisten von Euch hier total ok.
Was ich auf Eurem Board vermisse ist ein Unterforum, auf dem sich Neue
Forenmitglieder vorstellen können, außerdem ist mir bis jetzt immer noch
kein PM - Feature ins Auge gesprungen, viel Geflamme wär sonst sicher nicht
nötig gewesen.
Mein Studium der Informatik hab ich nach anderthalb Jahren enttäuscht
abgebrochen, weil
erstens: Dinge gelehrt wurden, die ich mit 11 Jahren an meinem Amiga 500
schon gewusst hab
zweitens: die Ausstattung der Unis in punkto Rechnern und OS in meinen Augen
Substandard ist
drittens: es eine Frechheit ist, nach zehn Jahren begeisterten eigenständigen
Studiums der Programmiersprachen C und C++, an der Uni
plötzlich das viel langsamere JAVA aufgezwungen zu bekommen
viertens: eine Sprache nicht ausschließlich auf ihre Grammatik zu reduzieren
ist (angenommen ihr würdet die Grammatik der Französischen Sprache perfekt
beherrschen, aber fast gar keine Vokabel können, dann macht Ihr Urlaub in
Paris - trotz perfekter Kenntnis der Grammatik habt ihr keine Chance, Euch
auch nur einigermaßen zu verständigen, weil Euch einfach die Vokabel fehlen;
ich betrachte Programmiersprachen ganz ähnlich wie 'echte' Sprachen, man
kann die 'Grammatik' von C/C++ - also etwa das Wissen, wie Polymorphismus
prinzipiell funktioniert, noch so perfekt beherrschen, man wird trotzdem
kein einziges vorzeigbares Programm mit diesem grammatischen Wissen allein
zu stande bringen. Zumindest nicht innerhalb einer angemessenen Zeit.
Vokabel sind beim Erlernen einer Sprache genauso wichtig, wie das Erlernen
der Grammatik, die Vokabeln sind, im Falle von Programmiersprachen
die konkreten Bezeichner (nur um ein Beispiel zu nennen: 'CreateFile',
'WM_GETTEXT', natürlich sind auch 'ofstream' oder 'cout' nur
Vokabel - Eine Sprache kennt oft mehrere Begriffe, die
ähnliche Bedeutung haben)
fünftens: ich einem lukrativen Angebot einer Firma nicht widerstehen konnte
sechstens: mittlerweile trotzdem schon seit drei Jahren in der Branche bin
siebtens: mich Professoren, die sich mit MS-Feindlichkeit vor 18-20 jährigen
Studenten profileren wollen, ankotzenTja, etwas verspätet, aber doch - Klartext.
(mal ehrlich, die Maske habt Ihr mir doch alle abgekauft :))
-
EhrlicherMecnels schrieb:
Mein Studium der Informatik hab ich nach anderthalb Jahren enttäuscht
abgebrochen, weil
erstens: Dinge gelehrt wurden, die ich mit 11 Jahren an meinem Amiga 500
schon gewusst habdas ist doch schön für dich, wenn du dinge schon kennst?
EhrlicherMecnels schrieb:
zweitens: die Ausstattung der Unis in punkto Rechnern und OS in meinen Augen
Substandard istwas hat denn ein informatik-studium mit rechnern oder dem os auf diesen zu tun? waren die rechner so schnell und das os so gut das man texte drauf verfassen und programme drauf kompileren konnte? was brauchst du mehr?
EhrlicherMecnels schrieb:
drittens: es eine Frechheit ist, nach zehn Jahren begeisterten eigenständigen
Studiums der Programmiersprachen C und C++, an der Uni
plötzlich das viel langsamere JAVA aufgezwungen zu bekommendas ist doch super, stell dir vor sie hätten dir c++ beigebracht, dann hättest du doch nichts gelernt.
EhrlicherMecnels schrieb:
viertens: eine Sprache nicht ausschließlich auf ihre Grammatik zu reduzieren
ist (angenommen ihr würdet die Grammatik der Französischen Sprache perfekt
beherrschen, aber fast gar keine Vokabel können, dann macht Ihr Urlaub in
Paris - trotz perfekter Kenntnis der Grammatik habt ihr keine Chance, Euch
auch nur einigermaßen zu verständigen, weil Euch einfach die Vokabel fehlen;
ich betrachte Programmiersprachen ganz ähnlich wie 'echte' Sprachen, man
kann die 'Grammatik' von C/C++ - also etwa das Wissen, wie Polymorphismus
prinzipiell funktioniert, noch so perfekt beherrschen, man wird trotzdem
kein einziges vorzeigbares Programm mit diesem grammatischen Wissen allein
zu stande bringen. Zumindest nicht innerhalb einer angemessenen Zeit.
Vokabel sind beim Erlernen einer Sprache genauso wichtig, wie das Erlernen
der Grammatik, die Vokabeln sind, im Falle von Programmiersprachen
die konkreten Bezeichner (nur um ein Beispiel zu nennen: 'CreateFile',
'WM_GETTEXT', natürlich sind auch 'ofstream' oder 'cout' nur
Vokabel - Eine Sprache kennt oft mehrere Begriffe, die
ähnliche Bedeutung haben)du hast leider nicht erfasst worum es in einem informatik studium geht, das erlernen einer programmiersprache nimmt nur einen kleinen teil eines informatikstudiums ein. da kann man dann halt nicht so weit in die tiefe gehen. man baut ja in einem physikstudium auch keine atomkraftwerke. auch wenn die atomkraft ein interessantes teilgebiet der physik ist.
EhrlicherMecnels schrieb:
siebtens: mich Professoren, die sich mit MS-Feindlichkeit vor 18-20 jährigen
Studenten profileren wollen, ankotzentja, andere kotzt halt dein ms-quelltext-geposte an.
EhrlicherMecnels schrieb:
Tja, etwas verspätet, aber doch - Klartext.
(mal ehrlich, die Maske habt Ihr mir doch alle abgekauft :))das gehört hier übrigens nicht in den thread...
-
Also, wenn du wirklich programmieren lernen willst, dann machs wie ich: ich hab gekauft: May: Grundkurs Softwareentwicklung mit C++. In Amazon gibts wohl gute Kritiken. Das war viel beser als manches andere Buch.
Fang langsam an mit der Arbeit!