Anfänger Suche Hife (Compelieren)
-
Hallo zusammen
Bin neu bei euch, und keine Ahnung ob ich hier richtig bin !
Frage:
Warum funktioniert das Compelieren dieses Programmes nicht?
Einstellungen: Win 32 / Win 32 Konsolenanwendung / leeres Projekt
#include <iostream.h>
#include <stdio.h>int Zahl1;
int Zahl2;
char Auswahl;
void main(void)
{
cout << "Bitte geben Sie die erste Zahl ein: ";
cin >> Zahl1;
cout << "Bitte geben Sie die zweite Zahl ein: ";
cin >> Zahl2;
cout << "Welche Rechenart möchten Sie ausführen?" << endl;
cout << "[A]ddition [S]ubtraktion ";
cout << "[M]ultiplikation [D]ivision" << endl;
cin >> Auswahl;
switch (Auswahl)
{
case 'a':
case 'A':
cout << Zahl1 << " + " << Zahl2 << " = " << (Zahl1 + Zahl2);
break;
case 's':
case 'S':
cout << Zahl1 << " - " << Zahl2 << " = " << (Zahl1 - Zahl2);
break;
case 'm':
case 'M':
cout << Zahl1 << " * " << Zahl2 << " = " << Zahl1 * Zahl2;
break;
case 'd':
case 'D':
cout << Zahl1 << " / " << Zahl2 << " = " << Zahl1 / Zahl2;
break;
}
getchar();
}Habe mehrere (#include, using namespace std u.s.w.) ausprobiert. Funktioniert nichts.
Wo liegt der Fehler?Danke im Vorraus
P.S. Arbeite mit Visula C++ 2008 Express
FEHLERMELDUNG
1>------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>test.cpp
1>e:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2008\projects\test\test\test.cpp(1) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "iostream.h": No such file or directory
1>Das Buildprotokoll wurde unter "file://e:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2008\Projects\Test\Test\Debug\BuildLog.htm" gespeichert.
1>Test - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
Hallo!
Ich bin mir nicht sicher aber versuch mal
die .h wegzumachen also#include <iostream>anstatt
#include <iostream.h>denn das ist ja eine C++ und keine C datei
außerdem muss es dannint main()statt
void main(void)heißen.
dann fehlt aber auch nochusing namespace std;nach
#include <iostream>Vor
getchar();würde ich dann noch ein
system("pause");setzen
-
1. benutze die cpp-Tags
nnun zu den inhaltlichen sachen:
2.
Du sollst nicht c-header mit c++-headern mixen! 
--> die stdio.h kann raus
Wenn du wirklich Funktionalität daraus brauchst, solltest du #include<cstdio> benutzen
3. cpp header haben keine Dateiendung. schreibe #include <iostream>
4. (was dir wahrscheinlich auf die füße fällt, nachdem du 3. korrigiert hast)
cout und endl befinden sich (wie fast alles aus der cpp library im namespace std.
Du musst also entweder überall std::cout und std::cin und std::endl schreiben oder du fügst am anfang der Datei
(bitte nach den Includes) einusing namespace std;ein.
das hat zur folge, dass du alle funktionen Klassen und objkte aus dem std namespace ohne std::ansprechen kannst, was zu namenskonflikten führen kann.Deshalb merke:
1. niemals ein using namespace in einem header file verwenden!
2. sparsam mit using klauseln umgehen. Wenn man eine Klasse aus einem anderen Namespace nur einmal benutzt, braucht man kein using namespace dafür, da kann man auch das std:: davor lassen.Edit:
mist zu spät.Vor
getchar();
würde ich dann noch ein
system("pause");
setzendas würde ich lassen.
1. das "pause" iost bertiebssystemspezifisch
2. würde ich auch das getchar entfernen,
weil:
- im release-modus hält das visual studio das Konsolenfenster von sich aus offen, bis ein tastendruck passiert
- im debug-modus setzt man halt einen break point auf die return anweisung und hat den selben effekt
-
cplusplus_newbie schrieb:
...
Sorry, aber 2 Dinge stören mich in deiner Aufführung:
cplusplus_newbie schrieb:
dann fehlt aber auch noch
using namespace std;nach
#include <iostream>Das hier ist nur bedingt richtig. Ja, für ihn mag es jetzt einfacher sein. Nein, die Aussage "dann fehlt aber noch" möchte ich hier nicht unterstützen.
"using namespace" kann unter Umständen auch schwerwiegende Folgen haben (z.B. niemals in einem Header verwenden!). Wissen muss man nur das ohne das using namespace alle bestandteile der Standardbibliothek im Namensraum std liegen, und statt "string" z.B. "std::string" zu schreiben ist...
cplusplus_newbie schrieb:
Vor
getchar();würde ich dann noch ein
system("pause");setzen
Und system("pause") ist kein C++, und systemspezifisch.
-
Ich bin ja selber neu!
Und hab das was ich weiß halt hier rein gepostet. Dann hab ich mir den Quelltext rauskopiert und dann die sachen wo ich hier rein gepostet hab verändert. Bei mir lief das Programm dann. Das mit system("pause"); wusst ich nicht. Bis jetzt hab ichs immer verwendet.
-
heißen.
dann fehlt aber auch nochC/C++ Code:
using namespace std;Nö, das fehlt nicht..
Kann man machen, man kann aber auch genau so gut mit:std::cout; std::endl;arbeiten.
EDIT:
Sry, den post von asc zu spät gesehen...
-
Danke Eure Beiträge waren sehr hilfreich!
Habe #include<iostream>, #include<cstdio> ,using namespace std;
verwendet u. am Ende das getchar(); weggenommen
Funktioniert