Problem mit Dev-C++ / Achtung blutiger Anfänger ;-)
-
bei dev-cpp
müssen einige grundlegende sachen beachtet werden
so zB muss man bei einigen .c anstatt .h schreiben oder das ganz und gar weglassen
wichtig ist auch das using namespace im deklarationsteil vorkommt!!!
/---------------------------------------------------------------------------/
/---Bibliothekenblock---Anfang---/
#include <iostream> //
#include <conio.c> //
#include <stdlib.h> //
#include <math.h> //
#include <iomanip> //
#include <stdio.h> //
#include <windows.h> //
#include <dos.h> //
#include <fstream> //
#include <time.h> //
#include <string>
/---Bibliothekenblock---Ende-----/using namespace std;
/---------------------------------------------------------------------------/bei deinem programm... das sich nicht ausführen läßt...
schreib vor return 0;mal ein getch();
dieser befehl wartet auf eine belliebige eingabe und geht dann weiter
dein programm rattert von oben bis unten durch und ist bei reurn 0 am ende und schließt dann
mit getch(); wartet er an dieser stelle und schließt dann
-
Danke für eure Antworten.
"cin" wartet doch auch auf eine Eingabe , also dürfte getch auch nichts bringen oder ?
an Erhard.
Ich habe es schon auf 3 Rechnern gezogen und auch wieder neuinstalliert.Keine Ahnung, worans liegen könnte in der Schule klappt alles wie am Schnürchen, aber ich will auch zuhause weiterüben ...
-
"cin" wartet doch auch auf eine Eingabe , also dürfte getch auch nichts bringen oder ?
cin ist Käse, getch() nicht C++-Standard. So gehts richtig:
#include <iostream> void wait() { std::cin.clear(); // std::cin.ignore( std::cin.rdbuf()->in_avail() ); std::streambuf* pbuf = std::cin.rdbuf(); std::streamsize size = pbuf->in_avail(); std::cin.ignore(size); std::cin.get(); } int main() { //... wait(); }
-
Hast du die von mir oben geposteten Sourcecodes schon getestet?
-
Den Code kann ich auch nicht ausführen , compilieren ja
-
Den Code kann ich auch nicht ausführen , compilieren ja
Was ist denn das Ergebnis des Kompilierens und Linkens? Hast du zum Schluss eine Binary, z.B. exe bei MS Windows?
-
Ja genau das ist der Fall.
Exe ist da , alles so wie es soll ; Nur ausführen lässt sich nichts.Dev C++ 4.9.9.0.
-Neues Projekt
-Windows Application C++
-und fange dann an z.b. das was ich im vorigen Teil schon gepostet hatte.
-compile and run. -> compile ja run nein / ts zeigt aber auch keine Fehler anDanke für deine Mühe Erhard
-
Dev-C++ 4.9.9.0 (Betriebssystem: MS Windows 2000):
Mach mal überhaupt kein Projekt auf, sondern gib einfach Strg+N (Datei-Neu-Quelldatei) ein. Folgender Source:
#include <iostream> void wait() { std::cin.clear(); // std::cin.ignore( std::cin.rdbuf()->in_avail() ); std::streambuf* pbuf = std::cin.rdbuf(); std::streamsize size = pbuf->in_avail(); std::cin.ignore(size); std::cin.get(); } int main() { std::cout << "Hallo!" << std::endl; wait(); }
Dann bitte Funktionstaste F9 (Kompilieren + Ausführen) drücken.
Speichern unter wait_test.cppKonsole sollte erscheinen mit
Hallo!
Im entsprechenden Verzeichnis befinden sich nun folgende Dateien:
wait_test.cpp mit 1 KB
wait_test.exe mit 415 KBDiese exe ist ausführbar.
Wo genau hakt es bei genau diesem Beispiel?
-
Danke , das hat funktioniert . Komisch.
Waran kanns gelegen haben ?
-
Vermutlich daran, dass du (obwohls dir oben glaub ich mal gesagt wurde) immer noch bei Projekt auf
Windows Application (!)
gedrückt hast ... Denn schließlich willst du eine Konsolenanwendung bauen, die die Funktion int main() benutzt, während eine WindowsApplication aber eine WinMain-Funktion haben will. Und das mit dem wait() ist auch sehr wichtig, das Problem hatte ich am Anfang auch mit Dev-Cpp
Als Anfänger weiß man ja noch nicht, dass das Programm immer sofort beendet wird ^^
Aber ich denke, das Erhards Tipp mit dem Strg+N hier mehr geholfen hat, denn mit cin "stoppt" das Programm ja auch.Also beim nächsten Mal eine Konsolenanwendung (siehe Bild auf der Seite hiervor) bauen, NICHT Windows Application.
greetz
-
Danke, das hat funktioniert.
O.k., Konsolen sind abgehakt.
Jetzt kannst du als nächstes die Windows-Applikation mit dem o.g. Windows-Programm testen. Dafür muss man ein Projekt "Windows Application" anlegen.
Programme findest du auch hier: http://www.henkessoft.de/api1.htm
z.B.:#include <windows.h> int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { MessageBox( NULL, "Inhalt", "Überschrift", MB_OK ); return 0; }
Da du aber offensichtlich noch am Anfang stehst, solltest du dich bei C++ zunächst längere zeit auf die Konsole beschränken.
Ausgewählte Tutorials:
http://www.cpp-tutor.de/cpp/toc.htm
http://tutorial.schornboeck.net/inhalt.htm
http://www.volkard.de/C++/Tutorial/Grundlagen/
http://de.geocities.com/throni3/cpp/Inhalt.html
http://www.henkessoft.de/cpp_konsole.htm
-
Hallo
Sorry , hatte nicht viel Zeit .Windows Appl. mache ich dann später wenn die console ein wenig besser sitzt *g*
Bin echt erstaunt, wie gut einem hier geholfen wird .
Ich habe ein wenig weiter gemacht .
Der Code lässt sich zwar ausführen , und ich kann die Zahlen eingeben , aber danach bricht er einfach ab , und die Console schliesst sich .Mit borland habe ich keinerlei Problem , aber den habe ich nicht hier
#include <iostream> #include <stdlib.h> using namespace std; float Berechnung (float Zahl1 , float Zahl2 , float Zahl3) { return (Zahl1*Zahl2*Zahl3); } int main () { const float limit = 40; float Zahl1 , Zahl2 , Zahl3 , Ergebnis; cout<<"Programm zur Berechnung von Volumenberechnung"<<endl; cout<<"Bitte geben Sie die erste Seitenlänge ein"<<endl; cin>>Zahl1; cout<<"Bitte geben Sie die zweite Seitenlänge ein"<<endl; cin>>Zahl2; cout<<"Bitte geben Sie die dritte Seitenlänge ein"<<endl; cin>>Zahl3; Ergebnis= Berechnung ( Zahl1 , Zahl2 , Zahl3); if (Ergebnis>limit) cout<<"Das Volumen ist zu gross" ; else cout<<"Das Volumen ist kleiner als das Limit"; cout<<"Das Volumen beträgt"<<Ergebnis<<"m³"<<endl; return (0) ; }
-
schreib vor das return (0)
ein:getch(); // wartet auf tasten druck des anwenders und geht dann weiter
oder
_sleep(1000); // (millisekunden)
oder
system("pause"); // wartet auf tastendruck des users mit gleichzeitiger textausgabe
/--------------------/
bei
return (0); // kannst du die klammern weglassen
-
getch() von conio.h (nicht C++-Standard) oder:
#include <iostream> void wait() { std::cin.clear(); std::cin.ignore( std::cin.rdbuf()->in_avail() ); std::cin.get(); } int main() { //... wait(); }