Erste Funktion mit Fehlern

noiseless

Mitglied
Thread Starter
Dabei seit
23.08.2008
Beiträge
75
Reaktionspunkte
3
Hallo liebe Community,
ich habe mich mich gestern dazu entschieden C++ zulernen. Ich benutze das Buch C++ in 21 Tagen. Nun bin ich an dem Kapitel Funktionen angekommen und jetzt treten die ersten Probleme auf.

In diesem Programm soll die Fläche von einem Garten berechnet werden.
Leider spuckt mir Xcode immer Fehler in Zeile 13 und 14 aus.

Fehlermeldung:

error: 'cout' was not declared in this scope
error: 'cin' was not declared in this scope

Wenn, ihr sonst noch Logikfehler findet, dann korrigiert mich doch bitte.
Wie gesagt, das ist die erste Übung zu Funktionen ;) .

Vielen Dank ;)

HTML:
#include <iostream>

int area (int lengthofyard, int widthofyard);


int main () 
{
    // insert code here...
	
	int lengthofyard;
	int widthofyard;
	int areaofyard;
	
13	cout << " Wie breit ist Ihr Garten ?";
14	cin >> widthofyard;
	
	cout <<"\n Wie lang ist ihr Garten ?";
	cin >> lengthofyard;
	
	areaofyard= area(lengthofyard,widthofyard);
	
	cout <<"\n Die Fläche Ihres Gartens betraegt";
	
	cout <<areaofyard;
	cout << "Quardratmeter\n\n";
	
    return 0;
}

int area( int l , int w)
{
	return l * w;
}
 
Welche Funktion hat das "\n"? Muß das nicht auch in Zeile 13 auftauchen?

Und Quardratmeter schreibt man Quadratmeter. :)
 

Ob das nun die beste Wahl war? Aber wer weiß, ich kenn das buch ja eigentlich gar nicht... heißt es eigentlich wirklich „C++ in 21 Tagen“ oder nicht doch eher „Visual C++ in 21 Tagen“?


cin und cout sind Dinge, die in einem Namespace liegen. (ja, ich bin auch anfänger und das mit dem Namespace hab ich nur prinzipiell begriffen). Namespaces kannst du dir grob gesagt als Funktionspakete vorstellen, die dir bestimmte funktionen und anderes gedöngs (cin und cout sind IOStreams) bieten, quasi ein „Werkzeugkasten für C++ Programmierer“ (spätestens hier werden mich alle Profis köpfen ^^).
Sei's drum, bedeuten tut es konkret, dass du entweder vor jedes cin bzw. cout ein std:: packen musst (also cin durch std::cin ersetzen und cout durch std::cout), damit der Compiler weiß, aus welchem Werkzeugkasten deine Werkzeuge stammen, oder du erklärst ihm am Anfang der Datei (üblicherweise gleich nach den include Dateien), welche Werkzeugsammlungen du alles benutzen willst: Das machst du durch das bereits erwähnte using namespace std; - so sparst du ne Menge Schreibarbeit.

Irgendwo habe ich mal gelesen, dass es „besser“ sei, überall std:: davor zu schreiben, allerdings fällt mir nicht mehr ein, wieso. :kopfkratz: Vermutlich, damit in größeren Projekte jeder sieht, in welchem Werkzeugkasten die „Funktion“ (bzw hier der IOStream) liegt. Solange du aber nur kleine Programmchen schreibst, würde ich using namespace std; nutzen.

Insgesamt sähe das also so aus:

Code:
#include <iostream>

[COLOR="Blue"]using namespace std;[/COLOR]

int area (int lengthofyard, int widthofyard);

int main () 
{
    // insert code here...
	
	int lengthofyard;
	int widthofyard;
	int areaofyard;
	
	cout << " Wie breit ist Ihr Garten ?";
	cin >> widthofyard;
	
	cout <<"\n Wie lang ist ihr Garten ?";
	cin >> lengthofyard;
	
	areaofyard= area(lengthofyard,widthofyard);
	
	cout <<"\n Die Fläche Ihres Gartens betraegt";
	
	cout <<areaofyard;
	cout << "Quardratmeter\n\n";
	
    return 0;
}

int area( int l , int w)
{
	return l * w;
}
 
Zuletzt bearbeitet:
Ja du hast Recht, es ist wirklich für Visual C++ . Ich denke die Basics sind überall gleich. Falls das mit dem Programmieren, wirklich keine Eintagsfliege ist, schaue ich mich nochmal nach anderen Büchern um. Außerdem muss ich zugeben, ich habe noch kein Buch gefunden, indem ich alles sofort verstanden habe. Ich benutze zusätzlich immer noch google, um mehr mehrere Quellen zu haben.

So back2topic:

Soweit funktioniert mein Programm jetzt, allerdings muss ich nachdem ich "Breite" und "Länge" angegeben habe, immer diesen Playknopf in Xcode drücken. Das ist mir bei einigen Aufgaben schon aufgefallen. Kann mir jemand mehr über diesen Knopf erzählen ^^?

mfg
 
Ich hab in XCode noch keinen "Playknopf" entdeckt.
Ich würde solche Progrämmchen auch nicht unbedingt in XCode machen. Das ist, als würdest Du mit nem Tieflader zum Brötchen holen fahren ;).
Außerdem fehlen in Deinem Code ein paar Leerzeichen.
 
Naja, sicherlich ist Xcode für meine Ansprüche komplett überladen. Ich hab es nur nicht so gern, wenn ich zig Programme installieren muss. Letztens hat mir halt noch jemand empfohlen: "Nimm doch Xcode :)" .

Das mit dem Playknopf ist, der Start- und Stoppbutton für den Debugger, wenn ich mich nicht irre ^^.
 
Zuletzt bearbeitet:
Ach, Du meinst vermutlich "Run". Da kann man auch Apfel-R nehmen.
 
Ich kann dir auf jeden Fall die Seite tutorial.schornboeck.net zum C++ lernen empfehlen.
 
Seh' ich auch so. Ich wollt's nur nicht gleich vorschlagen, weil der vi (besser gesagt vim) am Anfang natürlich auch eine Hürde darstellt, aber ich bin der Meinung, die muss man in Kauf nehmen. Es lohnt sich.
 
Natürlich bin ich nicht direkt auf c++ angewiesen. Ich musste allerdings eine Entscheidung treffen und ich bin bei c++ gelandet. In erster Linie geht es mir wirklich darum, eine Programmiersprache wirklich gut zu können.
 
Natürlich bin ich nicht direkt auf c++ angewiesen. Ich musste allerdings eine Entscheidung treffen und ich bin bei c++ gelandet. In erster Linie geht es mir wirklich darum, eine Programmiersprache wirklich gut zu können.

Will Dich da keinesfalls entmutigen, aber c++ ist ein Biest. Auf jeden Fall solltest Du Dir ein Buch über Entwurfsmuster zu Gemüte führen-ich sag mal so, die Türen für ein gutes OO-Design sind bei c++ versteckter und schwieriger zu öffnen, als z.Bsp. bei objective-c oder Java.

Gruß, SMJ
 
Das sind aber auch zwei verschiedene Sachen. ;) Jetzt lasst ihm doch C++ wenn er sich dafür entschieden hat.

Ruhig Brauner...
Allein schon der Titel "c++ in 21 Tagen" ist ein unhaltbares Verspechen ;-)

Soll der TE ruhig c++ lernen, aber die Sprache ist definitiv schwieriger zu lernen als andere OO-Sprachen. Informationen über Design-Patterns und die die Sprache begleitenden Frameworks (STL, Boost) sind keine leichte Kost (der stoustrup und die effective c++ Reihe von scott meiers sind eine wichtige Lektüre aber wiederum eine hohe Einstiegshürde für Anfänger). Ohne den OO-Hintergrund landet er bei schlechtem c-code.

Aber was rede ich...
 
Zuletzt bearbeitet:
Will Dich da keinesfalls entmutigen, aber c++ ist ein Biest. Auf jeden Fall solltest Du Dir ein Buch über Entwurfsmuster zu Gemüte führen-ich sag mal so, die Türen für ein gutes OO-Design sind bei c++ versteckter und schwieriger zu öffnen, als z.Bsp. bei objective-c oder Java.

Gruß, SMJ

Da möchte ich dir grundsätzlich recht geben. C++ ist eine der schwierigeren Sprachen und imho mit Sicherheit nicht für Einsteiger geeignet. Da aber gleich mit Design Pattern drauf zu hauen, find ich aber übertrieben.

Natürlich bin ich nicht direkt auf c++ angewiesen. Ich musste allerdings eine Entscheidung treffen und ich bin bei c++ gelandet. In erster Linie geht es mir wirklich darum, eine Programmiersprache wirklich gut zu können.

Ich würde dir dringend anraten, dich auf eine einfachere Sprache wie Java zu stürzen. Wenn du dabei ersteinmal verstanden hast, wie du mit dieser Sprache umgehst, ist jede weitere Sprache ein stück leichter. Die gegenüber Java größeren Fähigkeiten von C++ kannst du danach lernen.
 
gute bücher (subjektive meinung):

C von A bis Z, Jürgen Wolf, Galileo Computing
C++ von A bis Z, selber autor und verlag

C Programmieren von Anfang an Helmut Erlenkötter, rotfuchs verlag
C++ Programmieren von Anfang an, selber autor und verlag. setzt allerdings grundkenntnisse in C voraus.

wenn du C vom Erlenkötter durch hast, kannst dich mal an C++ setzen.

vor allem is der umgang mit zeigern (pointer) ein sehr heikles thema.

"In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg." — Bjarne Stroustrup.
 
Mich möchte mich nochmal wiederholen, dass ich es nicht gut finde, vor C++ C zu lernen. C++ kommt zwar von "C with classes" inzwischen haben die beiden Sprachen aber nicht mehr viel gemein.

Aber das Stroustrup-Zitat trifft meine größeren Bedenken ziemlich gut.
 
Zurück
Oben Unten