You are not logged in.

  • Login

1

Friday, June 15th 2007, 6:36pm

Radius Berechnen, nur Fehlermldungen

Tagchen,

Hier ersteinmal folgenden Code:

Source code

1
2
3
4
5
6
7
8
#include <iostream.h>
void main()
{
   float radius;
   cout<<"Bitte geben Sie den Radius ein: ";
   cin>>radius;
   cout<<"Der Umfang betraegt: "<<2*3.14*radius<<endl;
};



So wenn ich die jetzt starten will öffnet sich das Fenster ganz kurz und schlies sofort wieder!

Als Fehlermeldung spukt der mir aus:

- fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "stdafx.h"" einzufügen?

Wenn ich die Einfüge kommt folgendes:
- error C2065: 'cout': nichtdeklarierter Bezeichner
- error C2065: 'cin': nichtdeklarierter Bezeichner
- error C2065: 'endl': nichtdeklarierter Bezeichner


So was muss ich jetzt tun, damit das klapt?

Gruß,
Tim

2

Friday, June 15th 2007, 8:10pm

Ich gehe davon aus du hast einen MS-Compiler.

Wenn dieser etwas neuer ist und du halbwegs aktuellen Code schreiben willst,
dann nimm, wenn dein Compiler das unterstützt, die Headerfiles ohne das .h.
Dann musst du den Code aber noch ein wenig anpassen.

Weiter ist es heute üblich statt

C Quellcode

1
void main()


C Quellcode

1
int main()


zu wählen.

Wozu ist das letzte Semicolon?

Kannst du den Radius noch eingeben?

Zum sofortigen Beenden deines Programmes, wenn es richtig ist gibt es im
Netz tausende von Beiträgen.

MfG Bcc-fan

3

Friday, June 15th 2007, 8:13pm

Ersteinmal sind ein paar Fehler in deinem Programm enthalten die gewisse VisualC Versionen ignorieren / stilistischer Natur sind.

In C++ heißt es

C Quellcode

1
#include <iostream>

statt

C Quellcode

1
#include <iostream.h>


und main hat _immer_ den Rückgabewert int. (Man kann jedoch das renturn 0; am Ende weglassen)

Dass sich das Fenster sofort wieder schließt ist ersteinmal normales Verhalten. Eine Konsolenanwendung beendet sich wenn sie fertig ist, und das ist sie ja nach der Ausgabe.

Der korekteste Weg IMHO das zu lsen ist einfach die cmd zu starten, in das Verzeichniss zu cd -en und so die exe AUS DER KONSOLE ausführen.

Es gibt auch möglichkeiten das Programm am Schluss auf Eingaben warten zu lassen, sodass man die RETURN-Taste drücken muss, könnte ich nachsehen weiß ich nicht auswendig.

Zu der letzten Fehlermeldung: In der stdafx.h steht ein

C Quellcode

1
#include <iostream>

Die StandardC++-Header (die ohne .h) deklarieren alle funktionen im Namensbereich (= namespace) std. Daher musst du korrekt die main()-Funktion so schreiben:

C Quellcode

1
2
3
4
5
6
7
int main() 
{ 
   float radius; 
   std::cout<<"Bitte geben Sie den Radius ein: "; 
   std::cin>>radius; 
   std::cout<<"Der Umfang betraegt: "<<2*3.14*radius<<std::endl; 
};


Die stdafx.h benötigt VisualC nur in bestimmten Projekttypen (frag mich nicht welche! ich arbeite hauptsächlich mit g++; ich habe mehrere Anwendungen ohne eine stdafx.h mit der VC8 kompiliert, auf der Comandline und in der IDE) und hat mit C++ an sich nichts zu tun.

EDIT:// war jemand schneller

4

Friday, June 15th 2007, 8:23pm

Hi,

danke erst einmal!

So nun habe ich folgendes Problem:
Das Fenster ist nun geöfnet und ich kann einen Radius eingeben, allerdings schliest sich das Fenster nachdem ich auf Enter gedrückt habe!

Wie kann ich das Fenster denn warten lassen, evtl. liegt es daran.

Gruß,
Tim

PS:

C Quellcode

1
2
3
4
5
6
7
8
#include <iostream>
int main()
{
   float radius;
   std::cout<<"Bitte geben Sie den Radius ein: ";
   std::cin>>radius;
   std::cout<<"Der Umfang betraegt: "<<2*3.14*radius<<std::endl;
};

5

Friday, June 15th 2007, 8:39pm

Quoted from ""darthdespotism""

Dass sich das Fenster sofort wieder schließt ist ersteinmal normales Verhalten. Eine Konsolenanwendung beendet sich wenn sie fertig ist, und das ist sie ja nach der Ausgabe.

http://www.c-plusplus.de/forum/viewtopic…-is-111042.html erklärt wie du diese eigentlich erwünschte Verhalten abändern kannst

6

Friday, June 15th 2007, 8:51pm

Hallo,

ich habe den Code von deiner verlinkten Seite eingebaut, aber das Fenster schliest sich trotzdem!

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int main()
{
   float radius;
   std::cout<<"Bitte geben Sie den Radius ein: ";
   std::cin>>radius;
   std::cout<<"Der Umfang betraegt: "<<2*3.14*radius<<std::endl;
}; 
#include <conio.h>
#include <windows.h>
 
void wait ()
{
    FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
    getch();
}


Hoffe ihr könnt mir als Neuling helfen.

Tim

7

Friday, June 15th 2007, 9:39pm

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
#include <windows.h>
 
void wait();
 
int main()
{
   float radius;
   std::cout<<"Bitte geben Sie den Radius ein: ";
   std::cin>>radius;
   std::cout<<"Der Umfang betraegt: "<<2*3.14*radius<<std::endl;
   wait();
}; 
 
 
void wait ()
{
    FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
    getch();
}


EDIT://
Wobei ich ehrlichgesagt die version mit dem cin persönlich besser finde, da conio nicht portabel ist

8

Friday, June 15th 2007, 10:36pm

Super Vielen dank, nun klapt es

9

Tuesday, June 19th 2007, 11:50am

Quoted from ""darthdespotism""

Wobei ich ehrlichgesagt die version mit dem cin persönlich besser finde, da conio nicht portabel ist


C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <stdio.h>
 
void wait();
 
int main()
{
   float radius;
   std::cout<<"Bitte geben Sie den Radius ein: ";
   std::cin>>radius;
   std::cout<<"Der Umfang betraegt: "<<2*3.14*radius<<std::endl;
   wait();
}; 
 
 
void wait ()
{
    fflush(stdin);
    getchar();
}


So könnte man der conio.h aus dem Weg gehen.

10

Tuesday, June 19th 2007, 12:00pm

Man könnte das Programm auch einfach aus der Shell aufrufen, damit man das Ergebnis sehen kann. Konnte man in Windows nicht auch einstellen, dass sich Konsolenfenster nach dem Beenden nicht schließen sollen?

11

Tuesday, June 19th 2007, 4:35pm

Quoted from ""Hafner""

Man könnte das Programm auch einfach aus der Shell aufrufen, damit man das Ergebnis sehen kann.

Reicht mir auch immer ;)
Aber es gibt halt Leute die ihren Doppelklcik brauchen

Similar threads

Social bookmarks