lit-web Geschrieben 18. April 2010 Teilen Geschrieben 18. April 2010 Guten Morgen Leute und vorab schon ein schönen Sonntag. Ich habe in der Schule Programme geschrieben über Visual C++ Express 3 und da funktionierte mein Code. Zu Hause habe ich die Aufgabe aus der Schule noch mal bisschen überarbeitet und da funktioniert das nicht. Zu Hause verwende ich Codeblocks und den MingW Compiler. Hier mal meine Code. #include <iostream> #include <string> #include <cmath> using namespace std; class Kugel{ private: double radius, pi; public: Kugel(){ radius = 0; pi = 3.14; } void set_radius(double rad){ radius = rad; } private: double get_radius(){ return radius; } public: void showRadius(){ cout<<"\n\nRadius = "<<radius; } void showDurchmesser(){ double durchm = (radius * 2); cout<<"Durchmesser = "<<durchm; } void showUmfang(){ double umfang = (2 * pi * pow(radius, 2)); cout<<"\nUmfang = "<<umfang; } void showObfl(){ double obfl = (2 * pi * pow(radius, 3)); cout<<"\nOberfläche = "<<obfl; } void showVol(){ double vol = ((3 / 4) * pi * pow(radius, 3)); cout<<"\nVolumen = "<<vol; } ~Kugel(){} }; int main(int argc, char *argv[]){ char buffer[5]; double radius; Kugel kug; if(argc == 2){ for(int i = 0; i < 5; i++){ buffer[i] = *argv[1]++; } //radius string in double wert casten radius = atof(buffer); if(radius < 0){ radius *= (-1); kug.set_radius(radius); } else { kug.set_radius(radius); } kug.showRadius(); kug.showDurchmesser(); kug.showUmfang(); kug.showObfl(); kug.showVol(); } else if(argc > 2) { cout<<"Zu viel Parameter übergeben: "; } else if (argc < 2){ cout<<"Zu wenig Parameter übergeben: "; } return 0; } Wie gesagt in der Schule konnte ich nun in der Konsole von Visual C++ Express 3 den Programmnamen eingeben und einen Parameter und da funktionierte alles. Aber nun rufe ich im Codeblocks über den Button Build and Run die Konsole auf und da kommt sofort die Meldung das zu wenig Parameter übergeben wurden. Was kann bzw. muss ich machen damit das überall gleich abläuft? Danke für eure Hilfe lit-web Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
GosuNosu Geschrieben 18. April 2010 Teilen Geschrieben 18. April 2010 ich weiss eigentlich gar nicht was du willst, dein programm funzt doch genau so wie du es geschrieben hast. die ausgabe "zu wenig prameter ..." kommt, weil du ja warscheinlich kein argument übergibst, wenn du den code mit run ausführst. dazu fällt mir jetzt einfach mal ein: programm builden ... dann rechtsklick arbeitsplatz -> eigenschaften -> erweitert -> umgebungsvariablen. Dann : (wenn noch nicht vorhanden die variable 'PATH' erstellen und als wert dann zb. C:\xampp\mysql\bin einstellen. jetzt muss du nur noch deine exe datei in den angegebenen ordner verschieben und kannst sie mit deinem argument in der cmd ausführen. sollte eigentlich klappen... hoffe ist verständlich ... have fun Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2010 Teilen Geschrieben 18. April 2010 Project -> Set programs' arguments... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lit-web Geschrieben 18. April 2010 Autor Teilen Geschrieben 18. April 2010 Danke das werde ich mal probieren. Ich war es aus der Schule gewohnt das in der Konsole so einzugeben. progname argument <enter> Und so funktionierte das. Aber hier im CodeBlocks eben nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2010 Teilen Geschrieben 18. April 2010 Ich war es aus der Schule gewohnt das in der Konsole so einzugeben. progname argument <enter> [/CODE] Und so funktionierte das.Was genau meinst du denn mit "Konsole"? Die ganz normale Eingabeaufforderung von Windows? Die hat absolut nichts mit der Entwicklungsumgebung zu tun. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lit-web Geschrieben 18. April 2010 Autor Teilen Geschrieben 18. April 2010 Was genau meinst du denn mit "Konsole"? Die ganz normale Eingabeaufforderung von Windows? Die hat absolut nichts mit der Entwicklungsumgebung zu tun. Nein die nicht. Es gibt doch unter Visual c++ Express gleich eine Eingabeaufforderung mit dazu. Und mit der arbeiten wir in der Schule. So und zu Hause habe ich eben die IDE CodeBlocks und mache das da über die Build and Run Schlatfläche. So in der Schule ging das ganze in dem dann eben den programmnamen eingegeben habe und den oder die Parameter. Hier geht das aber nun nicht mehr. Ich habe mir auch kein Projekt angelegt sondern nur die .cpp Dateien. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2010 Teilen Geschrieben 18. April 2010 Es gibt doch unter Visual c++ Express gleich eine Eingabeaufforderung mit dazu.Ehrlich gesagt, ich weiß nicht, was du meinst. Kannst du beschreiben, wie man dahinkommt? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
frobber Geschrieben 22. April 2010 Teilen Geschrieben 22. April 2010 Ich denke ich habe dein Problem verstanden: Dein Programm scheint ja soweit korrekt zu sein. 1) In der Schule geht ihr so vor, dass ihr das Programm mit VisualStudio Express compiliert und dann mit Hilfe der getrennt zur Verfügung gestellten Konsole startet. Diese Konsole ist nichts weiter, als das die ganz 'normale' Eingabeaufforderung mit ein paar zusätzlichen definierten Umgebungsvariablen, die vom VisualStudio benötigt werden. Beim Aufruf des Programms mit der Konsole gibst du dann alle benötigten Parameter mit an, also "<Programmname> <Parameter1> <Parameter2> ..." . Diese Vorgehensweise ist zwar etwas umständlich, aber völlig ok. 2) Zu Hause nimmst du CodeBlocks und als Compiler den gcc aus der MinGW Umgebung. Soweit so gut. Durch den Befehl 'Build and Run' compilerst du dein Projekt und anschließend wird es sofort gestartet. Hier liegt auch dein Problem. Du hast offensichtlich nicht angegeben mit welchen Parametern dein Programm (automatisch) gestartet werden soll und dein Programm beschwehrt sich anschließend mit Recht darüber, dass es keine hat. Lösung: a) Auch CodeBlocks bietet die Möglichkeit dein Projekt nur zu compileren und nicht automatisch zu starten. Den genauen Menüpunkt hab ich nicht im Kopf. Anschließend startest du die Eingabeaufforderung (Befehl: cmd) und wechselst in das Ausgabeverzeichniss deines Projektes. Dort sollte sich die erstellte EXE deines Programms befinden. Jetzt kannst du wie in der Schule dein Programm mit allen benötigten Parametern aufrufen. Sowohl VisualStudio, als auch CodeBlocks bieten in den Projeteinstellungen einen Menüpunkt 'Debuggen'. Die genaue Bezeichnung bei CodeBlocks ist mir auch hier nicht bekannt, aber das sollte zu finden sein :cool:. Dort kann eingestellt werden, wie das fertig erstellte Programm gestartet werden soll. Dort sind hauptsächlich die Einstellungen für das 'Working Directory' und die 'Command Arguments' wichtig. Der Working Path ist Standarmäßig das Ausgabeverzeichnis des Compilers. Im Punkt Commandline Arguments werden zusätzliche Argumente angegeben, die dein Programm benötigt. Wenn du dort die deine Parameter angibst sollte alles funktionieren. Nachtrag: Der Befehl 'Build and Run' in CodeBlocks, beziehungsweise 'Run' im VisualStudio machen das gleiche, wie du in der Konsole. Sie öffnen eine Konsole und starten dein Programm mit den in den Projekteinstellungen angegebenen Parametern. Ich hoffe das war verständlich Viel Erfolg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.