Anfängerfrage zu C++

M

max.k

Aktives Mitglied
Thread Starter
Dabei seit
30.11.2003
Beiträge
172
Reaktionspunkte
3
Hallo,
wir haben in der schule begonnen mit c++.
dort nutzen wir visuall studio c++, oder so.
nun habe ich das progrämmchen aus der schule in xcode eingegeben und dann erst einmal fehler meldungen bekommen. die habe ich aber wegbekommen. nun meine frage: ich habe zwei pdf's angehängt, das eine ist so wie es in xcode fehler gibt (uebung3) das ander macht keine fehler(main).
wieso muß ich es so abändern damit es läuft?

ich habe auch festgestellt das xcode vielleicht etwas zu umfangreich ist für meine belange, gibt es da vielleicht was das dem programm der schule mehr ähnelt?

ich habe auch schon das SubEthaEdit getestet aber das schein nur ein editor zu sein, wie kann ich da compileren?

Das sind wieder einmal viele fragen, aber ich hoffe ja das ihr mir da weiter helfen könnt.
danke
gruß max
 

Anhänge

  • main.pdf
    24,4 KB · Aufrufe: 105
  • uebung3.pdf
    25,3 KB · Aufrufe: 100
Ich nutze nicht Visual Studio, aber wenn dein Programm vorher ohne "std" auskam, wird vermutlich oben im Programm folgendes gestanden haben:

namespace std;

Das kannst du auch in Xcode verwenden und dann wäre "std::" redundant.

Ich finde Xcode eigentlich optimal und es ist auch wirklich einfach zu bedienen. Neues Projekt erstellen (C++ Tool) und auf gehts ;) Apfel+S gespeicher, Apfel+R Programm ausführen.
Also Visual Studio (hatte mir das mal an der Universität angeschaut) finde ich zur Einarbeitung deutlich komplexer.

Gruß,
Dennis

PS: Ein paar Leerzeichen würden deinem Code übersichtlicher gestalten. Zumindest für Java gibt es einen Style-Guide. Der ist ganz nett zu lesen - auch ohne große Kenntnisse ... http://java.sun.com/docs/codeconv/
 
Zuletzt bearbeitet:
Dein Problem ist der ANSI-Standard für C++. Dieser führt sogenannte "Namensräume", auf englisch "namespace" ein. Dies hat den Sinn, dass man Namen für Variablen unf Funktionen sich nicht ständig neu ausdenken muss. Man öffnet einen Namensraum, benennt seine Variablen wie man will und muss sich keine Gedanke über die Namen machen. Zum Beispiel kannste jetzt einfach eine eigene Funktion cout definieren, ohne mit der Funktion aus dem Standard-Namensraum std::cout in Konflikt zu geraten. Damit Du aber weiterhin auch die Funktion für Ausgaben auf stdout verwenden kannst, musst Du seit ANSI-C++ den Namensraum vor dem Funktionsaufruf angeben: std::cout.

Wenn DU weisst, dass Du im ganzen Programm nur auf einen Namensraum zugreifen wirst, kannst Du auch ganz weit oben 'namespace std;' in Dein Programm schreiben. Dann wird für jeden Funktionsaufruf angegenommen, dass die Funktion in dem Namensraum std definiert ist.

Das war zwar ein bisschen lang, aber vielleicht macht es die Sache etwas klarer.

Wenn Du XCODE überreden willst, Deine Programme aus der Schule zu verwenden, musst Du abstellen, dass der nach ANSI-C++ Standard übersetzt.

Grüße
 
Ich würde das Programm anders schreiben - bin aber auch kein Experte.

Konnte es nur im Terminal ausprobieren, komme gerade an XCode nicht ran (Installationsprobleme usw.)

Allerdings sollten beim Compilieren zwischen XCode und Terminal eigentlich keine Unterschiede sein. Ergo laufen sie beide bei mir - habe aber nicht probiert, ob die Lösungen stimmen......

//Quadratische Gleichung
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
double a,b,c,x1,x2,x;
cout <<"\n Mit diesem Programm koennen Sie quadratische Gleichungen loesen.";
cout <<"\n a? ";
cin >> a;
cout <<"\n b? ";
cin >> b;
cout <<"\n c? ";
cin >> c;
if(a==0)
{
x=-b/c;
cout<<"\n x="<<x;
}
else
if (b*b-(4*a*c)>=0)
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
cout <<"\n x1="<<x1;
cout <<"\n x2="<<x2;
}
else
{
cout <<"\n keine reelle Loesung !!!";
}
cout <<"\n\n Bis zum naechsten mal.";
return 0;
}

Und das andere Programm würde ich so schreiben:

//Quadratische Gleichung
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
double a,b,c,x1,x2,x;
cout <<"\n Mit diesem Programm koennen Sie quadratische Gleichungen loesen."<<endl;
cout <<"a? "<<endl;
cin >> a;
cout <<"b? "<<endl;
cin >> b;
cout <<"c? "<<endl;
cin >> c;
if(a==0)
{
x=-b/c;
cout<<"x="<<x;
}
else
if (b*b-(4*a*c)>=0)
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
cout <<"x1="<<x1<<endl;
cout <<"x2="<<x2<<endl;
}
else
{
cout <<"keine reelle Loesung !!!"<<endl;
}
cout <<"\n\n Bis zum naechsten mal."<<endl;
return 0;
}

Edit: Sorry für die katastrophale Formatierung....
 
Zu deiner anderen Frage: Wenn du kein XCode willst (ich mag es auch nicht so) dann empfehle ich als Editor VIM. Kompilieren kannst du das ganze dann mit dem gcc (auch direkt aus dem Vim herraus).
 
Rakor schrieb:
Zu deiner anderen Frage: Wenn du kein XCode willst (ich mag es auch nicht so) dann empfehle ich als Editor VIM. Kompilieren kannst du das ganze dann mit dem gcc (auch direkt aus dem Vim herraus).

Ich widerspreche nur ungern - aber für einen Anfänger finde ich VIM zu heftig.

Ich würde dir SubEthaEdit oder TextWrangler (beide umsonst) empfehlen - dort schreibst Du deine Programme und hast auch Syntax Highlighting (oder wie das heißt....)

Compilieren kannst Du im Terminal.
Bsp.: Du hast eine Datei test.cpp
Dann tippst Du "g++ test.cpp"
Er compiliert und erzeugt die Datei a.out, die Du mit "./a.out" dann starten kannst.


Edit: Es sei denn, es würde sich jemand bereiterklären :D:D, mal eine HowTo für den VIM zu schreiben - wirklich nur die Basics (wenn ich danach google, finde ich immer viel zu komplexe Themen und Beispiele :mad:)
 
Zuletzt bearbeitet von einem Moderator:
Es gibt genügend Tutorials und Befehlsreferenzen im Web für vim.

Außerdem ist es ein sehr mächtiges Tool ;-)
 
Es gibt auch Tassen mit einer vi-Referenz. Ich hab so eine im Geschäft. Allerdings benutze ich vi nicht, die ist nur dafür da, dass sich die emacs-User ärgern. Ich ziehe ja nano vor. ;)

Aber mal im Ernst, wer kein XCode mag, dem kann ich SubEthaEdit nur empfehlen. Das ist zwar keine ganze IDE, aber ein ziemlich guter Editor.
 
Ich will ja den VIM hier nicht schlechtreden - ich finde auch, daß es ein sehr gutes und mächtiges Werkzeug ist - wenn man damit umgehen kann.

Und max.k sollte sich IMHO erstmal auf C++ konzentrieren, evtl. XCode, das Terminal und einem Editor wie SubEthaEdit, TextWrangler u.ä.

Sollte es ihm Spaß machen und er wil oder muß dabei bleiben, dann kann er sich immer noch in den VIM einarbeiten.....
 
Ich häng mich hier mal ein.

Womit und wie öffne ich ein Programm, das mit Borland c++ Builder geschrieben wurde? Ich hab hier einen Ordner mit haufenweisen Dateien, aber ich schaff es nicht das Zeug zum Laufen zu bringen.

ww
 
Wildwater schrieb:
Womit und wie öffne ich ein Programm, das mit Borland c++ Builder geschrieben wurde? Ich hab hier einen Ordner mit haufenweisen Dateien, aber ich schaff es nicht das Zeug zum Laufen zu bringen.
Nun ja, die CPP- und H-Dateien kannst du problemlos mit einem Texteditor deiner Wahl öffnen. Die Projektdatei hingegen wohl gar nicht. Das würde dir auch wenig nutzen, denn ein C++-Builder-Programm, das eine graphische Benutzeroberfläche verwendet oder sonstwie auf die borlandspezifischen Bibliotheken zugreift, wirst du unter OS X ohnehin nicht kompilieren können. Wenn es dagegen eine standardkonforme Konsolenanwendung ist, kannst du sie problemlos auch mit Xcode, respektive mit der GCC kompilieren. In diesem Fall brauchst du aber wiederum auch die Borland-Projektdatei nicht.
 
danke erst mal für die große hilfe.
ich denke ich werde erst einmal mit SubEthaEdit mein glück versuchen.
nebenbei werde ich versuchen mich in xcode einzuarbeiten.
ihr habt mir da schon sehr weitergeholfen, aber ich denke wir werden uns noch öfters schreiben, denn ich glaube da wird sicher noch das eine oder andere problemchen auftauchen.
cu
max

edit: und da ist schon die erste frage:
mit welchem tool kann ich den ein strucktogramm zeichnen?
 
Zuletzt bearbeitet:
Ein auf Struktogramme spezialisiertes Programm wüßte ich nicht, aber für Vektrographikdiagramme ist OmniGraffle eigentlich ganz gut. Das sollte bei deinem PowerBook auch dabei sein.
 
Badener schrieb:
Ich widerspreche nur ungern - aber für einen Anfänger finde ich VIM zu heftig.

Was ist denn an Vim heftig? Man muss sich als "Notepad-Fan" in der Bedienung umgewöhnen, das ist richtig. Aber an sich ist der Vim net kompliziert... Und extrem anpassbar...
 
Rakor schrieb:
Was ist denn an Vim heftig? Man muss sich als "Notepad-Fan" in der Bedienung umgewöhnen, das ist richtig. Aber an sich ist der Vim net kompliziert... Und extrem anpassbar...
Im Direktvergleich mit beispielsweise pico / nano fällt auf, daß die anwendbaren Kurzbefehle nicht angezeigt werden, was für Einsteiger allerdings eine gute Hilfe ist. Insofern halte ich die Winzlinge durchaus für einsteigergerechter. Auch kann man mit ihnen sicher ebenso gut arbeiten wie mit VIM, aber ich persönlich ziehe auch VIM vor. Das liegt aber ausschließlich an der Gewöhnung. ;)
 
Rakor schrieb:
Was ist denn an Vim heftig? Man muss sich als "Notepad-Fan" in der Bedienung umgewöhnen, das ist richtig. Aber an sich ist der Vim net kompliziert... Und extrem anpassbar...

Ist halt Geschmacksache.... mir ist er zu "kryptisch"..... Die Benutzerführung ist schon etwas unübersichtlich, auch die Eingabe der Kurzbefehle usw. usw.

Wenn man mit umgehen kann, dann gibt es kaum eine Alternative zu ihm, das stimmt....

Aber ein SubEthaEdit ist schon deutlich einfacher zu bedienen.

Daß der VIM extrem leistungsstark ist, habe ich ja niemals bezweifelt....
 
Rakor schrieb:
Was ist denn an Vim heftig? Man muss sich als "Notepad-Fan" in der Bedienung umgewöhnen, das ist richtig. Aber an sich ist der Vim net kompliziert... Und extrem anpassbar...

Radio Erwan antwortet: Im Prinzip ja, aber...

Mal ganz ehrlich: vim hat einfach eine andere Lernkurve. Wenn Du mir sagst, das Du vim innerhalb von ein paar Minute begriffen hast, dann Respekt.
Dumme Leute wie ich haben etwas gebraucht, und ich lerne bei vim auch nie aus.

Richtig ist: Wenn man bereit ist etwas Zeit zu investieren dann erkennt man irgendwann die klare Logik, die Einfachheit und vor allem die Mächtigkeit von vim. Offensichtlich sind diese Sachen aber nicht.

Leider gibt es noch keinen eingebauten vim Mode für Xcode, aber ich hab das schonmal auf den Wunschzettel geschrieben.

Gruss

Alex
 
Zurück
Oben Unten